FFMPEGでそれが可能であることは知っていますが、部分的なファイルがある場合はどうすればよいですか(最初と最後がないなど)。そこからいくつかのフレームを抽出することは可能ですか?
2 に答える
コマンド
ffmpeg -ss 00:00:25 -t 00:00:00.04 -i YOURMOVIE.MP4 -r 25.0 YOURIMAGE%4d.jpg
フレームを抽出します
- 25 秒から [-ss 00:00:25]
- 0.04 秒後に停止 [-t 00:00:00.04]
- 入力ファイル YOURMOVIE.MP4 からの読み取り
- 1 秒あたり 25.0 フレームのみを使用、つまり 1/25 秒ごとに 1 フレーム [-r 25.0]
- YOURIMAGE%04d.jpg という名前の JPEG 画像として、ここで %4d は先頭にゼロが付いた 4 桁の自動インクリメント番号です。
カスタム レートでフレームを抽出する場合を除き、オプション [-r] を適用する前にムービーのフレームレートを確認してください。[-t] と同じです。
ただし、トリミングされた(破損した?)入力ファイルでこれを試したことはありません。試してみる価値があります。
これは非常に難しい場合があります。MP4 ファイル形式には、オーディオとビデオの「サンプル」へのポインタを持つ「moov」アトムが含まれています。mp4 ファイルのフラグメントに moov アトムがない場合、作業はさらに複雑になります。「mdat」アトム (すべてのオーディオ サンプルとビデオ サンプルを含む) を調べるロジックを開発し、知識に基づいた推測を使用してオーディオとビデオの境界を見つける必要があります。
さらに悪いことに、moov アトムがなければ、スライスをデコードするために必要な SPS と PPS がありません。置換を合成する必要があります。MP4 の作成に使用されたコーデックがわかっている場合は、同様にエンコードされたファイルから SPS と PPS をコピーできる可能性があります。そうでない場合は、スライス (H.264 でエンコードされた画像) の構文が SPS および PPS で指定された値に依存するため、試行錯誤の面倒なプロセスになる可能性があります。