2

FFMPEG を使用してコマンド ラインからビデオ ファイルを変換するときに、いくつか問題があります。CentOS サーバーを使用していますが、残念ながらシェル アクセスがありません。

次のコマンドを使用してサウンドを抑制すると、すべてが完全に機能します (もちろん、サウンドはありません!)

ffmpeg -i $infile -an test.flv

ただし、何らかの方法でサウンドを有効にしようとすると、出力されるファイルのファイル サイズは 0 kb になります。

FFMPEG は libmp3lame と libfaac をサポートするようにコンパイルされており、必要なコーデックがインストールされています。サーバー上のFFMPEGの構成は次のとおりです。

FFmpeg バージョン SVN-rUNKNOWN, Copyright (c) 2000-2007 Fabrice Bellard, et al. 設定: --prefix=/usr --libdir=/usr/lib --mandir=/usr/share/man --incdir=/usr/include/ffmpeg --enable-libmp3lame --enable-libogg --enable- libvorbis --enable-libogg --enable-libtheora --enable-libfaad --enable-libfaac --enable-libgsm --enable-xvid --enable-x264 --enable-liba52 --enable-liba52bin --enable- pp --enable-shared --enable-pthreads --enable-gpl --disable-strip

これは、私が試したいくつかのコマンドの非常に小さなサンプルで、ファイル サイズが 0Kb になりました。

ffmpeg -i $infile test.flv
ffmpeg -i $infile -vcodec copy -acodec ac3 test.flv
ffmpeg -vcodec copy -acodec copy -i $infile -vcodec copy -acodec mp3 test.flv
ffmpeg -vcodec copy -acodec copy -i $infile -vcodec copy -acodec copy $outfile
ffmpeg -vcodec copy -acodec copy -i $infile -vcodec copy -acodec aac $outfile

ここで何が起こっているのかについて誰かがヒントを提供できれば、本当に感謝しています!

編集- stderrをファイルにリダイレクトしたときの結果は次のとおりです

FFmpeg バージョン SVN-rUNKNOWN, Copyright (c) 2000-2007 Fabrice Bellard, et al. 設定: --prefix=/usr --libdir=/usr/lib --mandir=/usr/share/man --incdir=/usr/include/ffmpeg --enable-libmp3lame --enable-libogg --enable- libvorbis --enable-libogg --enable-libtheora --enable-libfaad --enable-libfaac --enable-libgsm --enable-xvid --enable-x264 --enable-liba52 --enable-liba52bin --enable- pp --enable-shared --enable-pthreads --enable-gpl --disable-strip libavutil バージョン: 49.4.0 libavcodec バージョン: 51.40.4 libavformat バージョン: 51.12.1 2007 年 6 月 4 日 11:02:12 にビルドgcc: 4.1.1 20070105 (レッドハット 4.1.1-52)

入力 #0, mov,mp4,m4a,3gp,3g2,mj2, from '/path/to/7b4e37e703ce0a104f027cb9125b1a19.mp4': 期間: 00:00:32.4, 開始: 0.000000, ビットレート: 122 kb/s ストリーム #0.0( jpn): ビデオ: h263, yuv420p, 176x144, 29.97 fps(r) ストリーム #0.1(jpn): オーディオ: samr / 0x726D6173, 8000 Hz, mono

出力 #0, flv, to '/path/to/test.flv': ストリーム #0.0: ビデオ: flv, yuv420p, 176x144, q=2-31, 200 kb/s, 29.97 fps(c) ストリーム #0.1:オーディオ: mp3、8000 Hz、モノラル、64 kb/s ストリーム マッピング: ストリーム #0.0 -> #0.0 ストリーム #0.1 -> #0.1

入力ストリーム #0.1 でサポートされていないコーデック (id=73728)

4

2 に答える 2

4

サーバーに対してどのような種類のアクセス権を持っているか - サーバー上でコマンドを実行する能力が必要です。

その場合、からのエラー出力はffmpeg何ですか?

おそらく、適切な冗長な引数は、問題について詳しく教えてくれるでしょうか?

編集:

stderr 出力を取得できるかどうか見てみましょう。走る:

ffmpeg -version 

そして、それに対して何らかの出力が得られるかどうかを確認してください。stderr 出力を抽出できたら、元の問題を調査できます。

編集:

紛失しているように見えます。stderr今度はそれを取得する方法を考え出す必要があります。

多分:

ffmpeg -version 2>&1

動作します?

編集:

どのように私たちはどこかに到達しています - 入力オーディオコーデックはサポートされていません:

Unsupported codec (id=73728) for input stream #0.1

何だかわかりませんStream #0.1(jpn): Audio: samr / 0x726D6173, 8000 Hz, mono

しかし、そこに問題があります。

ローカルの Linux ボックスで調査することをお勧めします - 問題を見つけやすいかもしれません。

編集:

http://www.nabble.com/Convert-3gp-samr-file-td20514476.htmlから、ffmpeg をサポート付きでコンパイルできるよう--enable-libamr-nb --enable-libamr-wbです。

再コンパイルffmpegはオプションですか?

于 2009-03-06T14:46:12.323 に答える
-1

この問題を解決しました。ここに私のコード:

<?php
   define('FFMPEG_LIBRARY', '/usr/local/bin/ffmpeg');
   $exec_string = FFMPEG_LIBRARY.' -i robot.avi -an output.flv';
   exec($exec_string); //where exec is the command used to execute shell command in php
?>
于 2009-07-23T06:00:53.463 に答える