FFMPEG:通过FFMPEG中的ZeroMQ控制覆盖

FFMPEG:通过FFMPEG中的ZeroMQ控制覆盖,ffmpeg,zeromq,Ffmpeg,Zeromq,对于一个项目,我们需要手动控制视频流顶部的覆盖(静态图像)。我们得出结论,我们需要ZeroMQ来控制这一点,并且我们已经成功地通过ZeroMQ控制了一个音频过滤器 为此,我们考虑了两种选择: 使用颜色过滤器控制前景(图像)透明度 “移动”视频流前面的覆盖图像,并将其从视频画布中移除 不幸的是,我们成功地使这两种方法都起作用,但没有与ZeroMQ结合使用 例如: ffmpeg -loglevel verbose \ -i $STREAM \

对于一个项目,我们需要手动控制视频流顶部的覆盖(静态图像)。我们得出结论,我们需要ZeroMQ来控制这一点,并且我们已经成功地通过ZeroMQ控制了一个音频过滤器

为此,我们考虑了两种选择:

  • 使用颜色过滤器控制前景(图像)透明度
  • “移动”视频流前面的覆盖图像,并将其从视频画布中移除
  • 不幸的是,我们成功地使这两种方法都起作用,但没有与ZeroMQ结合使用

    例如:

    ffmpeg -loglevel verbose    \
                  -i $STREAM     \
                  -i overlay.png  \
              -bsf:a aac_adtstoasc \
            -threads 12             \
                 -vf "zmq=bind_address=tcp\\\://127.0.0.1\\\:1235, [0:v][1:v]overlay=25:25" \
                -c:a aac              \
                 -af "azmq=bind_address=tcp\\\://127.0.0.1\\\:1235,volume=1" \
                -c:v h264 output
    
    上述示例产生以下错误:

    Error reinitializing filters!
    Failed to inject frame into filter network: Invalid argument
    
    关于如何实现这一点的建议非常感谢

    工作解决办法:
    更新
    设法让它工作:

    ffmpeg -loglevel verbose    \
                  -i $STREAM     \
                  -i overlay.png  \
              -bsf:a aac_adtstoasc \
            -threads 12             \
     -filter_complex "[0:v][1:v]overlay=x=0:y=0,zmq=bind_address=tcp\\\://127.0.0.1\\\:1236" \
                -c:a aac              \
                 -af "azmq=bind_address=tcp\\\://127.0.0.1\\\:1235,volume=1" \
                -c:v libx264
    
    我可以通过ZeroMQ发送消息来删除(控制)覆盖:

    Parsed_overlay_0 x 1280