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.

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

Благодарю.

1 ответ1

1

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .