0

I have a MOV video file from an old digital camera where the video stream is just a series of JPEGs. I'm trying to extract those JPEGs without reencoding them (or at least come as close to the originals as possible) however using ffmpeg the extracted JPEGs are smaller than expected.

I'm open to using something other than ffmpeg if there's a better tool for the job.

Command I used to try to split the frames:

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

Checking file size of the frames in the original video:

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

(Total size ~944 KB)

But the extracted JPEGs are considerably smaller:

# 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

Also verified that the hashes are different:

# 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
...

I understand it might not be possible to extract them so perfectly that the hashes match, but the file sizes are way off so I know ffmpeg is doing some kind of reenecoding.

1 Answer 1

1

Add -c copy to enable stream copy mode:

ffmpeg -i original.mov -c copy img%04d.jpg
1
  • Perfect, thank you. File sizes are accurate to the byte. Hashes don't match but everything seems intact. Commented Apr 19, 2021 at 17:49

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .