web-dev-qa-db-ja.com

LIBFAACはチャネルをリサンプリングできません

avconvを使用してビデオファイルをMP4に変換していますが、libfaacを使用して6または8チャネルのファイルを2チャネルにエンコードしようとすると、次のエラーメッセージが表示されます。

Can not resample 8 channels @ 44100 Hz to 2 channels @ 44100 Hz

[〜#〜] edit [〜#〜]:メッセージの完全な出力はここにあります: http:// Pastebin .com/UXGrBy1D

これらは、avconv用にインストールしたコーデックです: http://Pastebin.com/hyQrqXqW

そして、これは私が実行しているコマンドです:

avconv -y -i input.mp4 -vcodec libx264 -bufsize 20M -maxrate 4000k -threads 12 -same_quant -acodec libfaac -ac 2 -ar 44100 -ab 128k output.mp4

私は何か間違ったことをしていますか?

または、libfaacの代替手段はありますか?will 8チャネルを2チャネルにリサンプリングしますか?

これは、ubuntu12.04サーバーのコマンドラインから実行できる必要があります。

2
Jimmery

まず、まだ行っていない場合は、チェックアウトしてください このffmpeg h.264エンコーディングガイド -これはavconvにも適用され、ffmpegのすべてのインスタンスをavconvに変更するだけです。また、avconvまたはffmpegのより新しいバージョンへのアップグレードを検討してください-Ubuntuを使用しているため、 このPPA 、または 自分でコンパイル (この最後のオプションは fdk_aac へのアクセスを提供します。これはFAACよりもはるかに優れたAACエンコーダーです)。

自分が何をしているのかを正確に理解していて、特定の理由がない限り、おそらく-bufsize 20M -maxrate 4000k -threads 12 -same_quantを使用するべきではありません。実際、そのPastebinの入力を使用すると、おそらく-codec:v copyを使用する必要があります。これは、ビデオストリームには影響しません。

あなたが述べた問題については... libfaacはあなたの問題ではないと思います。ここを見てください(あなたのペーストビンから):

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from \'/var/www/up/up50eefce404e4f.mp4\':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isomavc1mp42
    creation_time   : 2007-12-08 19:28:08
  Duration: 00:46:47.64, start: 0.000000, bitrate: 308 kb/s
    Stream #0.0(und): Audio: aac, 44100 Hz, stereo, s16, 111 kb/s
    Metadata:
      creation_time   : 2007-12-08 19:28:08
    Stream #0.1(und): Video: h264 (Baseline), yuv420p, 320x240 [PAR 1:1 DAR 4:3], 195 kb/s, 11.99 fps, 11.99 tbr, 11988 tbn, 23976 tbc
    Metadata:
      creation_time   : 2007-12-08 19:28:11

FFmpegは、入力オーディオがステレオであると見なします。ずっと後で:

Input stream #0:0 frame changed from rate:44100 fmt:s16 ch:2 to rate:44100 fmt:s16 ch:8
Resampling output channel count must be 1 or 2 for mono input; 1, 2 or 6 for stereo input; or N for N channel input.
Can not resample 8 channels @ 44100 Hz to 2 channels @ 44100 Hz

ビデオストリームはまた、多くのエラーの地獄を投げています。入力が破損している可能性があります。

次のコマンドが機能するのは可能です。

avconv -ac 8 -i input.mp4 -c:v copy -c:a libfaac -b:a 128k -ac 2 output.mp4

-acはオーディオチャンネルの数を設定します:ifAACストリームが破損していない場合、コンテナ形式が誤ったデータを提供している可能性がありますavconvに変換し、入力の前に-ac 8を置くと、MP4コンテナによって提供される設定が上書きされます(出力の前に-ac 2を置くと、ffmpegに2つのオーディオチャネルに出力するように指示されます)。

4
evilsoup