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

相關內容