web-dev-qa-db-ja.com

ffmpegファイル名出力形式

ffmpegを使用して一連のフレームを画像として出力する場合、 ドキュメントを見つけることができる唯一の形式frame_%d.jpgです。 %d識別子は、シーケンシャルフレームカウントに置き換えられます。

出力ファイル形式で使用できる他のパラメーターはありますか?具体的には、特定のフレームのタイムスタンプを追加する機能が必要です。

16
Yuval Adam

この動作は、その時点ではまだ実装されていませんでした。

FFmpegのフォークに%tサポートの初期バージョンを実装し( https://github.com/yuvadm/FFmpeg )、現在パッチのクリーンアップに取り組んでいます。アップストリームにマージできます。

7
Yuval Adam

strftimeオプション を使用すると、日付と時刻の情報を使用してファイル名を展開できます。構文については strftime()関数のドキュメント を確認してください。

たとえば、strftime()から画像ファイルを生成するには%Y-%m-%d_%H-%M-%S pattern、次のffmpegコマンドを使用できます。

ffmpeg -f v4l2 -r 1 -i /dev/video0 -f image2 -strftime 1 "%Y-%m-%d_%H-%M-%S.jpg"
5
jqgsninimo

映画の時間に基づいてファイル名を作成するbashスクリプトをハックしました。ファイル名に「hh_mm_ss」という形式を使用します。あなたはそれを見ることができます:

https://github.com/pozar/makemoviethumbs

2
pozar

フレーム数については、特別なデバッグモードでレポートを使用できます。

FFREPORT=file=\'file.log\':level=48 && ffmpeg ... -vf select=eq(pict_type\,PICT_TYPE_I) -vsync vfr -f image2 OUTPUT

次に、名前をpreg_match_allと一致させることができます。

preg_match_all("/] n:(\\d+)\\.[^>]+pict_type:I/Us",$log,$m,PREG_PATTERN_ORDER,5000);
$frames=$m[1];

お楽しみください!

0

もう1つのオプションは、ffprobe -show_packetsを実行し、そのデータを使用して、生成された各jpgファイルのタイムスタンプを「推測」することです(着信ビデオフレームごとに1つ生成すると仮定します)。うわぁ!

0
rogerdpack