Я хотел бы добавить текст в видео файл с FFMPEG. Хотя я смог сделать это с простым текстом

$ FFMPEG -y -i $ SOURCE \-vf drawtext = "fontfile =/usr/share/fonts/Lato-Reg-webfont.ttf:fontsize = 40:box = 1:boxcolor = black:fontcolor = white:text = ' $ WATERMARK ':x =(main_w-text_w)-10:y =(main_h-text_h)-4 "\-threads $ THREADS -f mp4 -vcodec mpeg4 -b $ MOBILE_BITRATE -r $ MOBILE_FRAME_RATE -strict -2 \-s $ RESOLUTION_SD -acodec libfaac -ar $ MOBILE_AUDIO_RATE -ac $ MOBILE_AUDIO_CHANNELS -ab $ MOBILE_AUDIO_BITRATE \$ VIDEONAME_MOBILE-android.mp4

это не будет выглядеть достаточно хорошо. Поэтому я попытался добавить прозрачный файл PNG в качестве водяного знака. В поисках примеров я попробовал вот так:

$ FFMPEG -y -i $ SOURCE \-vf "movie = $ WATERMARK_SMALL_PATH [водяные знаки]; [in] [водяные знаки] overlay = 10:main_h/2-overlay_h/2 [out]" \-threads $ THREADS -f mp4 - vcodec mpeg4 -b $ MOBILE_BITRATE -r $ MOBILE_FRAME_RATE -строгий -2 \-s $ RESOLUTION_SD -acodec libfaac -ar $ MOBILE_AUDIO_RATE -ac $ MOBILE_AUDIO_CHANNELS -ab $ MOBILE_ONATE_A_BB

это не сработает. Я могу поделиться точным выводом ошибки, если это может быть полезным для всех.

1 ответ1

7

С наложенным фильтром вам не нужен формат movie= . Это проще, поэтому используйте этот формат:

ffmpeg -y -i inputmovie -i inputpicture.png -filter_complex 'overlay=0:0' -s 1280x720 ...other parameters... outputfile.mp4

Размер, который я ввел, приведен только в качестве примера - ваш будет другим. Обратите внимание, что размер изображения одинаков как для кадра, так и для кадра, и масштабирование здесь фактически не выполняется. 0:0 для выравнивания изображения по верхнему левому краю кадра фильма - это логично, так как они имеют одинаковый размер.

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