Я пишу конвейер gstreamer, используя синтаксис командной строки для отправки видеопотока, и хотел бы отправить данные вместе с ним. Одним из решений, которое я считал целесообразным, было отправить данные в виде файла субтитров.
Я могу мультиплексировать как видео, так и файлы субтитров через rtp, используя следующий конвейер:
gst-launch-1.0 rtpmux name=mux ! udpsink host=127.0.0.1 port=5000 \
filesrc location=movie.avi ! decodebin ! videoconvert ! x264enc ! rtph264pay ! mux.sink_0 \
filesrc location=movie.srt ! subparse ! rtpgstpay ! mux.sink_1
Я знаю, что он прибывает как следует, потому что я могу просматривать порт, получающий данные с Netcat. Но когда я пытаюсь прочитать поток с помощью gstreamer на стороне получателя, я получаю « синтаксическая ошибка ». Сейчас я использую конвейер
gst-launch-1.0 udpsrc port=5000 caps = "application/x-rtp" ! rtpptdemux name=demux ! queue ! \
demux.src_0 ! rtph264depay ! decodebin ! videoconvert ! autovideosink \
demux.src_1 ! rtpgstdepay ! fakesink
. В нем я пытаюсь отменить каждый шаг на стороне отправителя, но что-то не так, и я не знаю, что это такое. (Я бы кое-что сделал с субтитрами позже, подделка предназначена только для отладки)
Если есть другие способы сделать это, я был бы рад любой помощи!
Что касается других возможных решений, я понимаю, что RTP поддерживает текстовый диалог с использованием полезной нагрузки rtp ( RF C 4103 ) и для синхронизированного текста ( RF C 4396). ) но из того, что я нашел в списке плагинов gstreamer для RTP, пока нет никакой поддержки.
Моя конечная цель - отправить видео с opencv на одном компьютере вместе с некоторыми данными и прочитайте это синхронно в принимающей стороне. После работы командной строки я бы адаптировал ее к opencv и непрерывно переписывал файл субтитров или передавал переменную напрямую.
Заранее большое спасибо за помощь!