FFMPEG: управление оверлеем через ZeroMQ в ffmpeg - PullRequest
1 голос
/ 09 июля 2020

Для проекта нам нужно вручную управлять наложением (stati c image) поверх видеопотока. Мы пришли к выводу, что нам понадобится ZeroMQ для управления этим, и нам удалось успешно управлять звуковым фильтром через ZeroMQ.

Для этого мы рассмотрели два варианта:

  1. Используйте цветовой фильтр для управления прозрачностью переднего плана (изображения)
  2. «Переместите» оверлейное изображение перед видеопотоком и удалите его с видео холста

We ' Нам удалось заставить оба работать, но, к сожалению, не в сочетании с 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

Мы очень ценим совет о том, как этого можно достичь!

1 Ответ

2 голосов
/ 10 июля 2020

РАБОЧЕЕ РЕШЕНИЕ:

ОБНОВЛЕНИЕ
Удалось заставить его работать:

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
...