4

Я пытаюсь извлечь кадры из видео и получить точные метки времени каждого извлеченного кадра (на картинке).

Чтобы извлечь кадры из видео без отметок времени, я использую этот синтаксис:

ffmpeg -i video.wmv -r 0.08 -f image2 -s 512x384 video2%%4d.jpg

1 ответ1

6

Вы можете сделать это с помощью фильтра drawtext . Ваша сборка должна быть скомпилирована с --enable-libfreetype . Большинство статических сборок ffmpeg для Windows и Linux поддерживают этот фильтр. См. Страницу загрузки FFmpeg для ссылок.

отметка времени

продолжительность

продолжительность

ffmpeg -i input -vf "drawtext=fontfile=/usr/share/fonts/TTF/Vera.ttf: text='%{pts\:hms}': x=(w-tw)/2: y=h-(2*lh): fontcolor=white: box=1: boxcolor=0x00000000@1" image%03d.png

Текущее время

Текущее время

ffmpeg -i input -vf "drawtext=fontfile=/usr/share/fonts/TTF/Vera.ttf: text='%{localtime}': x=(w-tw)/2: y=h-(2*lh): fontcolor=white: box=1: boxcolor=0x00000000@1" image%03d.png

таймкод

таймкод

PAL 25 кадров в секунду без пропуска кадров:

ffmpeg -i input -vf "drawtext=fontfile=/usr/share/fonts/TTF/Vera.ttf: timecode='00\:00\:00\:00': r=25: x=(w-tw)/2: y=h-(2*lh): fontcolor=white: box=1: boxcolor=0x00000000@1" image%03d.png

Это адаптировано из примера с Burnt in Timecode в FFmpeg Wiki. Опция r устанавливает частоту кадров временного кода.

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