У меня есть видеофайл 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