Объединение двух конвейеров appsrc в 1 поток MPEG-TS

Я пытаюсь добавить несколько настраиваемых метаданных KLV в свой видеопоток в реальном времени. Недавно я узнал, что в идеале у вас есть поток метаданных и видеопоток, а затем объединяйте их в один транспортный поток.

Вот моя строка запуска для моего конвейера видеопотока:

self.video_launch_string = 'appsrc name=source is-live=true format=GST_FORMAT_TIME caps=video/x-raw,format=BGR,width={},height={},framerate={}/1 ! videoconvert ! x264enc pass={} quantizer={} speed-preset={} tune={} byte-stream=true ! mpegtsmux ! udpsink host={} port={} sync=true' 

Вот моя строка запуска для моего потока klv:

self.meta_launch_string = 'appsrc name=klvstream is-live=true format=GST_FORMAT_TIME caps=meta/x-klv,parsed=true ! mpegtsmux ! udpsink host={} port={} sync=true' 

Как мне создать один поток MPEG-TS из этих двух конвейеров appsrc?

Текущее поведение, которое я наблюдаю при запуске этих двух по отдельности, - это видео, которое доставляется клиенту, по-видимому, без данных. Я предполагаю, что это потому, что они на самом деле не объединены.

Я ценю помощь.


person user4493284    schedule 24.11.2020    source источник


Ответы (1)


Я получил конвейер, который объединил мое видео и метаданные в один поток MPEG-TS.

mpegtsmux name=mux alignment=7 ! udpsink host={} port={} sync=false
appsrc name=source is-live=true format=GST_FORMAT_TIME caps=video/x-raw,format=BGR,width={},height={},framerate={}/1 ! videoconvert ! x264enc pass={} quantizer={} speed-preset={} tune={} byte-stream=true ! mux.
appsrc name=klvstream is-live=true format=GST_FORMAT_TIME caps=meta/x-klv,parsed=true ! mux.

Обратите внимание на две вещи:

  • sync = false было необходимо. (Изменить: оказывается, это не обязательно, но поток кажется более производительным)
  • для вывода видеокадра также должен быть выведен буфер метаданных. Временная метка буфера видео и буфера метаданных, длительность, точки, точки и смещение должны быть одинаковыми. (Не уверен, что это обязательно, но мой видеоплеер много скулит об отброшенных пакетах метаданных, если они не равны).
person user4493284    schedule 01.12.2020
comment
Спасибо, что поделились конвейером, у меня есть версия на Python, но когда я хочу воспроизвести видео, показать ошибку декодера meta / x-klv .... Любое предложение? gist.github.com/All4Gis/509fbe06ce53a0885744d16595811e6f - person Fran Raga; 17.03.2021