Многоадресная рассылка GStreamer с использованием IPv6 через определенный сетевой интерфейс

Я относительно новичок в этой теме, поэтому в моих знаниях может быть фундаментальный пробел, но я пытаюсь использовать GStreamer для отправки потока MPEG2-TS на встроенное устройство с использованием IPv6 (в Windows 10). Встроенное устройство подключается через адаптер USB-Ethernet к медиаконвертеру (RJ45-to-BroadR-Reach).

Если я использую IPv4 для трансляции (например, 192.168.1.255), все работает нормально. Я могу получить поток на устройстве без проблем. Пример команды, которая работает:

gst-launch-1.0.exe -v filesrc location=d:/video.ts do-timestamp=false ! \ "video/mpegts, systemstream=(boolean)true, packetsize=(int)188" ! \ tsparse set-timestamps=true ! rtpmp2tpay mtu=1200 pt=127 ! \ udpsink host=192.168.1.255 port=5001

Теперь мне нужно сделать это с IPv6 через многоадресную рассылку, и я не могу понять, как это сделать!

Предположим, что IPv6-адрес встроенного устройства — fe80::1:2:3, а IPv6-адрес интерфейса Ethernet на ПК — fe80::1:2:4. Какой адрес использовать для многоадресной рассылки? Я уже пробовал ff0x::1:2:4 и ff1x::1:2:4 (где x=1,2,3), но данные передаются через основной сетевой интерфейс моего компьютера (например, интерфейс WiFi, это было проверено с помощью Wireshark).

Если я попытаюсь добавить параметр multicast-iface, GStreamer выдаст следующую ошибку:

Не удалось присоединиться к группе многоадресной рассылки: ошибка присоединения к группе многоадресной рассылки: запрошенный адрес недействителен в своем контексте.


person schaazzz    schedule 31.07.2018    source источник


Ответы (1)


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

  • Поэкспериментируйте с метриками рассматриваемых интерфейсов.
  • Добавьте маршрут для нужного диапазона адресов
  • Каким-то образом заставить весь трафик от GStreamer проходить через требуемый интерфейс (например, ForceBindIP)

Поскольку я не мог внести какие-либо постоянные изменения в машину Windows в отношении сетевых маршрутов/метрик, я выбрал модифицированную версию третьего варианта, то есть виртуальную машину VirtualBox с GStreamer в Linux с адаптером USB-Ethernet. настроить как единственный активный сетевой интерфейс.

person schaazzz    schedule 12.09.2018