Використовуйте і drawboxдля поля, і drawtextдля тексту.

ffmpeg -i input.mp4 -vf \
"format=yuv444p, \
drawbox=y=ih/PHI:color=black@0.4:width=iw:height=48:t=fill, \
drawtext=fontfile=OpenSans-Regular.ttf:text='Title of this Video':fontcolor=white:fontsize=24:x=(w-tw)/2:y=(h/PHI)+th, \
format=yuv420p" \
-c:v libx264 -c:a copy -movflags +faststart output.mp4
drawtextє boxопція, але наскільки я можу сказати, вона не може бути довільною шириною і відносно розміру тексту, тому тому drawboxвикористовується замість цього.
formatФільтр використовується для поліпшення кольору drawboxобласті; інакше, залежно від вхідних та вихідних форматів, область може виглядати ненасиченою або однотонною. Потім formatфільтр знову використовується для того, щоб формат пікселів вихідного файлу був сумісним з усіма програвачами.
У цьому прикладі аудіокопіюється потік, тому що ви, можливо, не захочете його повторно кодувати.
Старі ffmpegкористувачі повинні використовувати їх t=maxзамість t=fill.
snapchatтаймер. Наприклад, я зробив деякі випробування і FFmpeg містить джерело відеосигналу testsrc , який містить таймер:ffplay -f lavfi -i testsrc. Цифра 0 початкового таймера має розмір 29х52 пікселів, а його позиція у верхньому лівому куті становить 256 пікселів по горизонталі та 94 пікселів по вертикалі. Я можу обрізати область однієї цифри, як цеffmpeg -f lavfi -i testsrc -vf crop=29:52:256:94 -t 10 timer1.mp4