ffmpeg は JPEG エンコードされた MOV ビデオを再エンコードせずにフレームに分割します

ffmpeg は JPEG エンコードされた MOV ビデオを再エンコードせずにフレームに分割します

古いデジタル カメラから MOV ビデオ ファイルを取得しましたが、ビデオ ストリームは一連の JPEG にすぎません。これらの JPEG を再エンコードせずに抽出しようとしていますが (少なくとも元の画像にできるだけ近づけようとしています)、ffmpeg を使用して抽出した JPEG は予想よりも小さくなります。

よりよいツールがあれば、ffmpeg 以外のものを使用することも検討します。

フレームを分割するために使用したコマンド:

ffmpeg -i original.mov -f jpeg img%04d.jpg

元のビデオのフレームのファイル サイズを確認します。

# ffprobe -show_frames original.mov | grep pkt_size
pkt_size=25600
pkt_size=25600
...

(Total size ~944 KB)

しかし、抽出された JPEG はかなり小さくなります。

# ffprobe -show_frames img%04d.jpg | grep pkt_size
pkt_size=10554
pkt_size=15362
...

(Total size ~220 KB)

# du -ch *.jpg | grep total
220K    total

ハッシュが異なることも確認しました:

# ffmpeg -i original.mov -f framehash -

0,          0,          0,        1,   153600, 7ca21c4c396d15a4b4b4ebfbf70e9dc36ef8fb3ae12409822e34a25d0c9d5918
0,          1,          1,        1,   153600, e2ee2497513c032dab785d5ec65c9c96da47b6afa562b96a8b56b9c9169af4e0
...

# ffmpeg -i img%04d.jpg -f framehash -

0,          0,          0,        1,   153600, 09d39759af66c7d83bee706bd60d9e76e8e57925a49a8e2b07ff7a4eb811f986
0,          1,          1,        1,   153600, 96678aad212668c496944050b9d451c306edc09c5eaad0e14ce0dabbfba5ab3e
...

ハッシュが一致するほど完璧に抽出することはできないかもしれないことは理解していますが、ファイル サイズが大幅に異なるため、ffmpeg が何らかの再エンコードを実行していることはわかっています。

答え1

追加-c copy有効にするストリームコピーモード:

ffmpeg -i original.mov -c copy img%04d.jpg

関連情報