Перенаправление видеопотока rtsp из сети Ethernet в сеть WiFi на том же устройстве

Мне нравится ответ Стефана, потому что он не читает весь файл снова и снова, поэтому я добавляю здесь bash(в Linux )эквивалент его решения (bash не имеет встроенной seekили tellспособность ). Я бы использовал комментарий, но моя репутация слишком низкая.

LASTPOS=/tmp/saved_pos

exec 3< "$1"
test -f "$LASTPOS" && STARTPOS=$(($(<$LASTPOS)+1))
tail -c "+${STARTPOS:-1}" <&3 | grep "ERROR FOUND"
grep '^pos:' /proc/self/fdinfo/3 | cut -f2 > "$LASTPOS"

Я также заменил команду awkна grep, потому что она обычно быстрее. Вы можете направить вывод в команду awk, если вам нужна дальнейшая обработка.

1
28.06.2021, 13:08
2 ответа

Вот несколько советов по настройке системы Yocto. Вам придется более тщательно изучить каждую тему. Все они имеют свои преимущества и недостатки, но я бы предложил последний (NAT ).

  • Установить как мост

    Поскольку система Linux является точкой доступа, вполне возможно соединить интерфейс Ethernet и интерфейс Wi-Fi вместе. Конкретный метод требует правильной настройки hostapd для использования моста. Несколько указателей здесь и там .

    Вероятно, вам придется настроить (вручную во время сборки или с помощью DHCP )камеру для использования 192.168.42.1 на этот раз, но система Yocto все еще должна иметь (другой )IP-адрес в 192.168.42.0/24, потому что он все еще требует DHCP-сервера.

    Таким образом, это по-прежнему выявляло бы двойственную природу доски. Вероятно, есть способы сделать систему Yocto полностью прозрачной и по-прежнему предоставлять DHCP (, появляющийся с 192.168.42.1 ), но это было бы сложно сделать.

  • Установить как маршрутизатор

    Необходимо включить IP-переадресацию.

    • Когда система камер видна

      Это означает, что вы должны опубликовать маршрут к камере с помощью DHCP, но не как маршрут по умолчанию. Конечным пользователям не понравится потеря Интернета для использования камеры из-за нового маршрута по умолчанию. Чтобы публиковать определенные маршруты с помощью DHCP, вам нужны обе эти функции одновременно :

      .

      Конфигурация зависит от DHCP-сервера, используемого в системе. Это наверноеКеа ,который не имеет встроенной -поддержки для этих опций, но может обрабатывать любую произвольную опцию, как описано там (, для этого требуется хорошее понимание опции из RFC ).

      И не забудьте настроить для камеры маршрут по умолчанию через 192.168.30.34 (вручную или через DHCP, не требуя опций выше ).

      Но это может быть неинтересно, потому что:

      • использует сложные параметры DHCP и вторую сеть, у которой есть новый шанс конфликтовать с собственной настройкой сети пользователя.
      • по-прежнему показывает наличие двойной системы на плате
    • Или Камера скрыта за NAT

      Используя в качестве ALG внешний (то есть :не основной )модуль ядра Linux nf_nat_rtsp, предоставленный проектомrtsp -linux(и для пример, упакованный в Debian какnat -rtsp -dkms)по соответствующим правилам NAT, аналогичным:

      iptables -t nat -A PREROUTING -i uap0 -d 192.168.42.1 -p tcp --dport 554 -j DNAT --to-destination 192.168.30.35
      iptables -t nat -A PREROUTING -i uap0 -d 192.168.42.1 -p udp --dport 554 -j DNAT --to-destination 192.168.30.35
      

      и адекватная конфигурация вспомогательного модуля, как описано в этом блоге:Безопасное использование iptables и помощников по отслеживанию соединений или просто -повторное включение «небезопасного» метода после обдумывания любых соображений безопасности:

      sysctl -w net.netfilter.nf_conntrack_helper=1
      

      Резюме:

      • избегает сложной конфигурации DHCP и не раскрывает (тот факт, что )на плате есть вторая система

      • Камере даже не нужен маршрут по умолчанию, если используется двойной NAT:

        iptables -t nat -A POSTROUTING -o eth0 -s 192.168.42.0/24 -j MASQUERADE
        
      • требуется модуль ядра, поэтому модуль ядра поддерживается, если он не был включен ранее во встроенной системе.

      • Необходимо проверить совместимость модуля с RTSP

0
28.07.2021, 11:21

Я бы рекомендовал включить IP-переадресацию на вашем одноплатном компьютере. Поставить:

net.ipv4.ip_forward=1

- /etc/sysctl.confи запустите sudo sysctl -p. Я не уверен, как это работает в yocto.

Затем вам нужно убедиться, что трафик направляется с вашего компьютера на камеру через ваш компьютер yocto. Это зависит от того, как настроены другие сетевые интерфейсы на вашем компьютере. Как правило, это должно быть что-то вроде этого:

ip route add 192.168.30.0/24 via 192.168.42.1 dev wlp2s0

Я не знаком с RTSP, но полагаю, что этого должно быть достаточно.

0
28.07.2021, 11:21

Теги

Похожие вопросы