Я пытаюсь создать наложение текущей временной метки во время воспроизведения необработанного H.265 видео с ffplay помощи DrawText фильтра.

Хотя наложение текущего номера кадра отлично работает с:

ffplay -vf "drawtext=fontfile=/Library/Fonts/Microsoft/Arial.ttf: text='%{n}':box=1:x=(w-tw)/2:y=h-(2*lh)" video.265

Я не могу отобразить текущую метку времени, как описано в этом сообщении, используя text='%{pts\:hms}' . Используя этот мой вывод, выглядит так:

Скриншот

Я понимаю, что необработанный файл H.265 не имеет никакой информации о времени, поэтому это, вероятно, причина, почему я не могу использовать pts\:hms .

У меня вопрос, возможно ли использовать текущий номер кадра, как в text='%{n}' но разделить его на частоту кадров, например text='%{n/24}'? К сожалению, text='%{n/24}' не разрешен, и text='%{n}/24' также не работает:

screenshot2

Просто информация. Я упаковал сырое видео в файл mp4 ffmpeg -i video.265 -c:v copy video.mp4 и тогда команда из поста выше работает просто отлично. Но мне все еще любопытно, возможно ли выполнить некоторые вычисления внутри фильтра отрисовки текста.

1 ответ1

1

Вы должны использовать функцию eif

ffplay -vf \
       "drawtext=fontfile=/Library/Fonts/Microsoft/Arial.ttf: \
        text='%{eif\:trunc(n/3600/24)\:d\:2}\:%{eif\:trunc(n/60/24)\:d\:2}\:%{eif\:trunc(mod(n*24\,60))\:d\:2}: \
        box=1:x=(w-tw)/2:y=h-(2*lh)" \
video.265

Это создает выходной сигнал ЧЧ: ММ: СС и ожидает видеопоток 24 к / с.

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