web-dev-qa-db-ja.com

MP4 / FLVからフレームを抽出しますか?

私はFFMPEGでそれが可能であることを知っていますが、部分的なファイルがある場合はどうしますか(最初と最後がないなど)。それからいくつかのフレームを抽出することは可能ですか?

34
blez

コマンド

ffmpeg -ss 00:00:25 -t 00:00:00.04 -i YOURMOVIE.MP4 -r 25.0 YOURIMAGE%4d.jpg

フレームを抽出します

  • 2番目の25から開始[-ss 00:00:25]
  • 0.04秒後に停止[-t 00:00:00.04]
  • 入力ファイルYOURMOVIE.MP4からの読み取り
  • 1秒あたり25.0フレームのみを使用して、i。 e。 1/25秒ごとに1フレーム[-r 25.0]
  • yOURIMAGE%04d.jpgという名前のJPEG画像として。ここで、%4dは先行ゼロ付きの4桁の自動インクリメント番号です。

カスタムレートでフレームを抽出する場合を除き、オプション[-r]を適用する前にムービーのフレームレートを確認してください。[-t]にも適用されます。

ただし、クロップされた(破損した?)入力ファイルでこれを試したことはありません。試す価値があります。

79
ConstNT

これは非常に難しい場合があります。 MP4ファイル形式には、「moov」atomが含まれています。これは、オーディオとビデオの「サンプル」へのポインタを持っています。持っているmp4ファイルのフラグメントにmoovアトムがない場合、 'mdat' atom(これにはすべてのオーディオとビデオのサンプルが含まれます)を調べるロジックを開発し、経験に基づいた推測を使用してオーディオとビデオの境界を見つける必要があります。

さらに悪いことに、moovアトムがないと、スライスをデコードするために必要なSPSとPPSがありません。MP4の作成に使用されるコーデックを知っている場合は、置換を合成する必要があります。 、その後、同様にエンコードされたファイルからSPSとPPSをコピーできる場合があります。そうでない場合、スライスの構文(H .264エンコード画像)は、SPSおよびPPSで指定された値に依存します。

2
Mutant Bob