问题描述
我在我的 Android 应用程序中使用 libVLC 从我通过 WiFi 连接到的相机通过 rtsp 流式传输视频。
一般来说,流式传输工作正常,但如果我通过 WiFi(不提供互联网)连接相机并打开移动数据,则似乎存在流式传输问题。我使用 bindProcesstoNetwork
来确保流媒体是通过我的 WiFi 网络完成的。在某些设备(如搭载 Android 9 的华为 Mate 10)上,流媒体工作正常(似乎使用 WiFi 并忽略打开移动数据),但在其他设备(如搭载 Android 10 的三星 Note 10)上,当我使用新的网络 API 时似乎 VLC 正在尝试通过移动数据进行连接,并且仅在失败一段时间后才决定使用我相机的 WiFi(尽管我使用了 bindProcesstoNetwork
)。
我收到错误日志
VLC-std: Unable to determine our source address: This computer has an invalid IP address: 0.0.0.0
令人惊讶的是,如果我从系统设置连接到我的 WiFi,它工作正常......
我发现 some comments 媒体流是在一个单独的进程中完成的,它会忽略对 bindProcesstoNetwork
的调用,但在某些设备(和 Android 版本)上似乎可以工作,而在其他设备上则不能。
我已经在 Videolan 论坛上问过这个问题,但没有成功。
有没有办法强制 libVLC 使用指定的网络进行流式传输?
解决方法
我不认为 LibVLC 可以做到这一点,而且它有点超出多媒体框架的范围。
如果我是你,我会在应用方面处理这个问题,使用类似 How do I connect to a specific Wi-Fi network in Android programmatically?