代码之家  ›  专栏  ›  技术社区  ›  omega1

ffmpeg多个文本/徽标元素

  •  0
  • omega1  · 技术社区  · 6 年前

    我正在尝试向ffmpeg命令添加多个项,但遇到了问题。

    到目前为止,在命令中我自动更新一个图像,我用它作为视频,我还想添加一个标志和两行文字。

    我一直成功,直到最后一项,这是标志覆盖。

    ffmpeg \
        -f image2 -loop 1 \
        -y \
        -i "/var/www/html/image_rotate.png" \
        -re \
        -i audio.mp3 \
        -vf "movie=/var/www/html/overlay_logo.png [watermark]; [in][watermark] overlay=0:0 [out], drawtext=fontsize=10:fontfile=/var/www/html/OpenSans-Regular.ttf:textfile=/var/www/html/text1.txt:box=1:boxcolor=#000000:fontcolor=#FFFFFF:x=0:y=(h-text_h-20):reload=1, drawtext=fontsize=10:fontfile=/var/www/html/OpenSans-Regular.ttf:textfile=/var/www/htmltext2.txt:box=1:boxcolor=#000000:fontcolor=#FFFFFF:x=0:y=(h-text_h-30)" \
    

    这会导致以下错误:

    Simple filtergraph ... was expected to have exactly 1 input and 1 output. However, it had >1 input(s) and >1 output(s). Please adjust, or use a complex filtergraph (-filter_complex) instead.
    

    如果我删除我添加的最后一部分(覆盖徽标),我不会得到错误。 如果我添加多个-vf,它只处理一个(文本或徽标)。

    我不知道如何做到这一点。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Gyan    6 年前

    ffmpeg \
        -loop 1 \
        -i "/var/www/html/image_rotate.png" \
        -i "/var/www/html/overlay_logo.png" \
        -i audio.mp3 \
        -filter_complex "[0][1]overlay=0:0,drawtext=fontsize=10:fontfile=/var/www/html/OpenSans-Regular.ttf:textfile=/var/www/html/text1.txt:box=1:boxcolor=#000000:fontcolor=#FFFFFF:x=0:y=(h-text_h-20):reload=1, drawtext=fontsize=10:fontfile=/var/www/html/OpenSans-Regular.ttf:textfile=/var/www/htmltext2.txt:box=1:boxcolor=#000000:fontcolor=#FFFFFF:x=0:y=(h-text_h-30)" \
        -y \
        -shortest \
    

    标志现在作为常规输入输入。