私は数百のビデオファイルを持つs3バケットを持っています。
これらのファイルは、ffmpegを使用して大きなビデオファイルの一部を切り取って作成されました。
これは、別のバケットから元のビデオファイルをダウンロードし、ffmpegを実行してファイルをカットし、新しいファイルをそのバケットにアップロードするためのスクリプトを作成しました。 s3からダウンロード/アップロードする場合は、this php libraryを使用しました。私が使用し
ffmpegの構文:ffmpeg h.264無効な切り取り
ffmpeg -y -vsync 2 -async 1 -ss [time-in] -t [duration] -i [large-input-video.mp4] -vcodec copy -acodec copy [short-output-video.mp4]
ばかりのA/Vコーデックを変更することなく、指定した時間の間に、元のファイルをカットしなければなりません。
元のビデオファイルはすべてh.264でエンコードされています。これは、新しいファイル(クライアントのFlash PlayerにCDNを介してストリーム配信される)のエンコードにも必要です。
私の問題は、新しいファイルのほんの一部がh.264でエンコードされて出てきていますが、それらのほとんどはそうではありません(h.264は必須です。そうでなければファイルはクライアントの '側)。
私は元のビデオに問題をトレースすることはできません。同じffmpegコマンドを手動で同じパラメータと同じファイルで使用すると、出力ファイルが正常に出力されるためです。それは恣意的と思われる。
ffprobeを使用して、ファイルのコーデックに関する情報を取得します。たとえば
:
大(元)のビデオファイルの一つのffprobe:
...
ストリーム#0.0(ウント):ビデオ:H264、YUV420P、640x352、499キロバイト/ S、25 fpsで、25 TBR、90K TBN、50
TBC ...対応した新たなカットファイルの
ffprobe:
...
ストリーム#0.0(ウント):ビデオ:MPEG4、YUV420P、640x352 [PAR 1:1 DAR午後08時11]、227キロバイト/秒、25のFPS、25 TBR、25 TBN、25 TBC
...
見られるように、違いは 'H264' 対 'MPEG4' です。
新しいファイルが間違ったエンコードで出力される原因については、十分に理解できます。
ありがとうございます!
編集:すべてのファイルを分析した後
解決済みの問題は、私はそれらの3分の2が間違ったコーデックに出てきていることに気づきました。
私は3つのマシンを切断プロセス(3つの別々のEC2サーバー)に使用していたので、2つのマシンでffmpegがインストールされていませんでした(@LordNeckbeardが答えました)。
私は、3番目のマシンだけで、無効なファイルに対してのみプロセスを再実行しました。
貴重なヒントをありがとう! a/vシンクについて - それを使わないでコマンドを実行すると、オーディオとビデオの間に非常に顕著な遅延が生じます。元の問題については、元の投稿に私の追加を参照してください。 – EyalAr