Почему ffprobe сообщает неверное количество кадров?

3

У меня есть небольшой видеофайл, который ffprobe описывает как:

Input #0, avi, from 'sample.avi': 
Metadata: 
encoder : Lavf55.12.100 
Duration: 00:00:35.00, start: 0.000000, bitrate: 546 kb/s 
Stream #0:0: Video: msmpeg4v3 (MP43 / 0x3334504D), yuv420p, 320x240, 
             506 kb/s, 200 fps, 200 tbr, 200 tbn, 200 tbc 

Как видео 35 сек. долго, и с частотой кадров 200 кадров в секунду, я ожидаю, что будет (35 х 200) = 7000 кадров в видео.

Если я использую ffmpeg для фактического извлечения кадров из видео, я на самом деле получаю 6999 изображений (наверное, достаточно близко). Команда, которую я использую для этого:

c:\> ffmpeg -i sample.avi  -f image2 -c:v png Img%%04d.png

Примечание: «%%» требуется, когда команда запускается из интерфейса командной строки WinXP

Однако с помощью команды: -

c:\> ffprobe -select_streams v -show_frames sample.avi > frames.lis 

и подсчет количества [FRAME] элементов в frames.lis дает количество кадров 1023 кадра, а не 7000.

Любое объяснение?

Вот ссылка на очень похожий файл, который ведет себя таким же образом (~ 7 МБ):

http://www.filedropper.com/sample_65

Щелкните левой кнопкой мыши изображение «Загрузить этот файл» на странице.

Я использую 17APR2014 статическую сборку Win32 для ffmpeg 'ffprobe' под WinXP-SP3.

Если есть другой способ сделать это, я в первую очередь пытаюсь составить таблицу «число кадров» и «время» для серии видеофайлов для использования в другом приложении.

Благодарю.

Skeeve
источник
Можете ли вы поделиться примером видео? Обратите внимание, что продолжительность не всегда должна быть точной.
slhck
Добавили ссылку на образец файла .avi в публикации.
Skeeve
Для других с такой же проблемой @Skeeve получил ответы в списке рассылки FFmpeg: ffmpeg.org/pipermail/ffmpeg-user/2014-May/021318.html Не уверен, что это полностью решает мою проблему, хотя.
Gauthier

Ответы:

1

Есть ли причина 1023 не может быть правильным? Fps, на который вы ссылаетесь - это информация заголовка, поэтому она может быть неверной.

В выводе png много дублирующихся кадров? Ffmpeg может оказать вам услугу и вывести скопированные кадры в соответствии с сообщаемыми частотой кадров и длительностью.

Использование ffprobe - мое рекомендуемое решение. Трудно быть уверенным в 100% случаев, если вы на самом деле не декодируете кадры и не подсчитываете. Поэтому использование -count_frames или -show_frames должно дать вам номер, который вы ищете.

Примечание: нет никакой гарантии, что указанная продолжительность является точной.

dstob
источник