Добавить пользовательское время для видеокадров, используя ffmpeg

Я использую ffmpeg для кодирования необработанных данных пикселей (bgr32) в видеофайл. Данные о пикселях отправляются из Ja va-приложения в канал ffmpeg stdin.

Я ищу способ добавить наложение отметки времени к каждому кадру в закодированном файле видео. Похоже, есть способ добавить метку текущего времени. Инструкции можно найти здесь: http://einar.slaskete.net/2011/09/05/adding-time-stamp-overlay-to-video-stream-using-ffmpeg/

Видеофайлы, которые я кодирую, были захвачены несколько дней назад, и мне нужно добавить свое время для каждого кадра. Например 12.12.2013 11:11:45 а не текущее время.

Можно ли сделать что-то подобное с помощью ffmpeg?

Спасибо за помощь.

1 ответ

Есть drawtext фильтр при компиляции с --enable-libfreetype конфигурации. Если у вас этого нет, вы должны скомпилировать ffmpeg самостоятельно - хотя и не очень сложно.

Самый простой синтаксис был бы:

ffmpeg -i <input> -vf 'drawtext=fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=100:x=100' output.mp4

Это позиционирует текст со смещением 100 пикселей от верхнего левого угла. Затем вы можете использовать enable возможность указать текст для определенного кадра, например, чтобы показать текст только для кадра 123вы бы использовали:

drawtext=enable='eq(n,123)':fontsize=15:fontfile=FreeSerif.ttf:text='I':y=100:x=100

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


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

Другие вопросы по тегам