Как добавить временные метки на видео с помощью FFMPEG
FFMPEG — это мощный инструмент для обработки видео и аудио, который позволяет выполнять множество задач, включая добавление текстовых накладок, таких как временные метки. В этой статье мы рассмотрим, как правильно применить временные метки к видео, чтобы они обновлялись в реальном времени.
Версия FFMPEG
В данном примере используется версия FFMPEG 2025-03-10-GIT-87E5DA9067. Это последняя версия программного обеспечения, разработанная с помощью компилятора GCC 14.2.0, зависящего от MSYS2. Убедитесь, что у вас установлена актуальная версия FFMPEG, чтобы избежать возможных несовместимостей и ошибок.
Задача: добавление временных меток
Задача заключается в добавлении двух временных меток в верхнем левом углу видео. Одна временная метка должна отображать UTC, а другая — AEST. При этом важно, чтобы временные метки динамически обновлялись в процессе воспроизведения видео.
Попытки и ошибки
Пользователь пробовал использовать следующую команду для добавления временных меток:
ffmpeg -i input.mp4 -vf "drawtext=fontfile=BodoniFLF-Roman.ttf: text="%{gmtime\:1609459200 + t\: %Y-%m-%d %H\\\\:%M\\\\:%S} UTC - %{localtime\:1609459200 + t\: %Y-%m-%d %H\\\\:%M\\\\:%S} AEST": x=10: y=10: fontsize=24:fontcolor=white: box=1: [email protected]" -c:a copy output_video.mp4
Однако приведенная команда вызывает ошибки и не отображает динамические временные метки, а лишь фиксированные значения.
Ошибки, возникающие при выполнении команды
При попытке выполнить команду пользователю была выдана ошибка:
[AVFilterGraph @ 0000024bcb90e2c0] No option name near '%M\\\\:%S} UTC - %{localtime\:1609459200 + t\: %Y-%m-%d %H\\\\:%M\\\\:%S} AEST: x=10: y=10: fontsize=24:fontcolor=white: box=1: [email protected]'
Это указывает на проблемы в построении фильтров, используемых в команде. Ошибка также упоминает, что не удается открыть выходной файл.
Решение задачи
Для успешного добавления временных меток в видео необходимо правильно формировать команды и гарантировать, что они соответствуют синтаксису FFMPEG. Вот исправленная команда, которая должна помочь:
ffmpeg -i input.mp4 -vf "drawtext=fontfile=BodoniFLF-Roman.ttf: text='%{eif\:int(n/25)+1609459200\:d\:} UTC - %{eif\:int(n/25)+1609459200+36000\:d\:} AEST': x=10: y=10: fontsize=24:fontcolor=white: box=1" -c:a copy output_video.mp4
В этой команде используется функция eif
, которая позволяет вычислять значения на основе номера кадров, обеспечивая тем самым динамическое обновление временных меток в процессе воспроизведения.
Заключение
Добавление динамических временных меток на видео с помощью FFMPEG может показаться сложной задачей, но, следуя правильному синтаксису и используя актуальные версии инструментов, вы сможете с легкостью решать такие задачи. Если возникают ошибки, внимательно изучите сообщения об ошибках, так как они могут указывать на недочеты в команде или синтаксисе.