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 . Это должно быть возможно? Как?

Спасибо!

0