Можно ли ретранслировать поток RTP?


2

У меня есть случай использования, когда у меня есть камера (на дроне, с малиновым пи) за NAT, VPS-сервер с публичным IP-адресом и клиент за NAT, где я хочу отобразить видео.

На клиенте запущено программное обеспечение под названием QGroundcontroll, которое прослушивает поток RTP через локальный порт UDP, обычно 5000.

Если я запускаю клиент по VPN, чтобы он получал общедоступный IP-адрес, я могу передать видео, но VPN вносит слишком большую задержку. Я могу продемонстрировать это, запустив следующее на моем дроне:

ffmpeg -f lavfi -re -i testsrc -pix_fmt yuv420p -c:v h264 -f rtp udp://my-client-vpn-fixed-ip:5000

Что даст мне хорошую (но слегка искаженную) тестовую картинку.

Еще один тест, который я провел, - это запуск testrc непосредственно на моем клиенте, например, так же успешно:

ffmpeg -f lavfi -re -i testsrc -pix_fmt yuv420p -c:v h264 -f rtp udp://127.0.0.1:5000

Итак, теперь я разработал эту идею о ретрансляции потока rtp через мой VPS.

Вот что я попробовал:

На дроне (за NAT):

ffmpeg -f lavfi -re -i testsrc -pix_fmt yuv420p -c:v h264 -f rtp udp://my-virtual-private-server-fixed-ip:5600

На VPS (фиксированный IP, запущенный Debian, таким образом avconv):

avconv -i udp://127.0.0.1:5600 -map 0:0 -c copy -f rtp udp://127.0.0.1:5500

На клиенте (мой Mac, за NAT):

ffmpeg -i udp://my-virtual-private-server-fixed-ip:5500 -map 0:0 -c copy -f rtp udp://127.0.0.1:5000

Кажется, ни то, avconvни другое не ffmpegможет обнаружить или подключиться к потоку RTP, используя -i udp://adress:port. Это должно быть возможно? Как?

Спасибо!


Это невозможно с avconv или ffmpeg (AFAIK), так как это потребует от них создания UDP-сокета и прослушивания входящих данных. Вам нужно встроенное реле UDP. Наилучшим вариантом может быть настройка VPN через VPS, чтобы ваш дрон мог отправлять поток напрямую на частный IP вашего клиента.
IanB
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.