Воспроизведение RTSP: разница между VLC и Android в OpenCore
Я работаю над приложением Android для воспроизведения видеопотока по протоколу RTSP, предоставляемого потоковым сервером Darwin.
Моя проблема в том, что поток RTSP не может быть воспроизведен с помощью Android VideoView/MediaPlayer через определенные точки доступа WiFi, например, на моем рабочем месте. Я искал и обнаружил, что потоковый сервер Darwin использует UDP-порты 6970 - 6999 для потоковой передачи мультимедийных данных, и проблема может заключаться в брандмауэре. но тот же поток может быть воспроизведен с помощью VLC на ПК через ту же точку доступа WiFi.
В чем разница между механизмом, который использует VLC и встроенная медиа-платформа Android OpenCore? Можно ли мне написать свой собственный RTSP-клиент с openRTSP-источником live555 на Android? Любая помощь будет очень ценится.
Болтон
2 ответа
Я использовал wireshark для сканирования своей сети, и я думаю, что теперь я знаю разницу: когда я использую эмулятор Android, я вижу, что клиент продолжает отправлять UDP-запросы через порты 6970, 6971, но не получает ответа. И при использовании VLC данные RTP передаются в TCP через порт 554. И проблема вызвана брандмауэром, я думаю.
Как вы указали в своем ответе, VLC переключается на чередующийся Rtp поверх Rtsp, когда происходит сбой Udp.
Вот почему VLC продолжает работать.
Вы можете использовать мою библиотеку @ https://net7mma.codeplex.com/ если вы можете использовать.Net, или вы можете использовать его в качестве справочного материала для вашей собственной разработки.