Я использую ffmpeg для кодирования необработанных данных пикселей (bgr32) в видеофайл. Данные о пикселях отправляются из Java-приложения в канал 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 ответ1

0

При компиляции с конфигурацией 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

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


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

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