Добавить пользовательское время для видеокадров, используя 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
Поэтому, конечно, вы должны процедурно сгенерировать команду, чтобы показать определенную строку только в течение определенного времени.
Другая идея заключается в том, чтобы записывать субтитры в видео из предварительно созданного файла субтитров.