Как наложить последовательность изображений из канала поверх видеопотока с помощью ffmpeg? - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь выяснить проблему с ffmpeg.У меня есть следующая установка: - Плата мини-рекордера DeckLink (для входа HDMI) - Плата мини-монитора DeckLink (для выхода HDMI)

Мне удалось получить вход HDMI с карты Decklink, и выход-для карты вывода с помощью следующей команды:

ffmpeg -f decklink -video_input hdmi -raw_format yuv422p10 -i "DeckLink Mini Recorder" -f decklink -pix_fmt uyvy422 "DeckLink Mini Monitor"

Я попытался добавить комплексный фильтр, чтобы добавить наложение изображения, с помощью следующей команды, и это работает:

ffmpeg -f decklink -video_input hdmi -raw_format yuv422p10 -i "DeckLink Mini Recorder" -i ./tools/bin/windows/2.png -y -filter_complex "[0:1][1:0]overlay=10:10" -f decklink -pix_fmt uyvy422 "DeckLink Mini Monitor"

Я получаю ленту в реальном времени с устройства записи decklink, изображение добавляется в поток и выводится на выходную карту HDMI.Кажется, все работает.

Теперь я попытался изменить путь статического изображения для использования стандартного ввода (pipe:0), и у меня есть инструмент, который постоянно передает изображения в формате PNG на стандартный вывод: ffmpeg -f decklink -video_input hdmi -raw_format yuv422p10 -i "DeckLink Mini Recorder" -i pipe:0 -y -filter_complex "[0:1][1:0]overlay=10:10" -f decklink -pix_fmt uyvy422 "DeckLink Mini Monitor"

Результат, который я получаю на выходной карте HDMI, является статическим изображением первого кадра.Вывод ffmpeg также теперь меняется, и, похоже, он застрял в первой секунде потока:

`` `frame = 30 fps = 7.4 q = -0.0 size = N / A time = 00: 00: 01.00 битрейт = скорость N / A = 0,247x

{кадров: 30, currentFps: 7, currentKbps: NaN, targetSize: NaN, отметка времени: '00: 00: 01.00 '} `` `

Он просто остается на 00:00:01.00 и никогда не меняется.

Я попытался найти проблему и сделал следующее:

  • Попытка потоковой передачи DecklinkДиктофон -> наложение статического файла png -> Монитор Decklink = IS WORKS

  • Попытка потоковой передачи статического файла png -> Монитор Decklink = IS WORKS

  • Попытка потоковой передачи: 0 (файлы PNG) -> Монитор Decklink = РАБОТАЕТ

  • ПопыткаПоток Decklink Recorder -> pipe: 0 (наложение файлов PNG) -> RAW AVI файл IS WORKS

Единственная проблема связана с: - Попытка выполнить потоковую передачу Decklink Recorder-> труба: 0 (файлы PNG) оверлей -> DecklinkМонитор НЕ РАБОТАЕТ

Я подозреваю, что вывод Decklink более строгий, и мой pipe:0 с изображениями PNG нестабилен, и сочетание обоих приводит к его зависанию.

Есть идеи, как это решить?:(

Спасибо!

1 Ответ

0 голосов
/ 07 июня 2018

Сначала я бы попробовал это

ffmpeg -f decklink -video_input hdmi -raw_format yuv422p10 -i "DeckLink Mini Recorder" \
       -framerate 1/10 -i pipe:0 \
    -y -filter_complex "[1]fps=5[i];[0:1][i]overlay=10:10" \
       -f decklink -pix_fmt uyvy422 "DeckLink Mini Monitor"

, где 10 в 1/10 представляет приблизительную продолжительность в секундах между изображениями, отправляемыми по каналу.

...