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

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

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

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

編集: メッセージの完全な出力はここにあります: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意思8 チャンネルを 2 チャンネルに再サンプリングしますか?

Ubuntu 12.04 サーバーのコマンド ラインからこれを実行できるようにする必要があります。

答え1

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

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

あなたが述べた問題については... libfaac が問題だとは思いません。ここを見てください (あなたの pastebin から):

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

関連情報