使用libstreaming将视频从Android设备流式传输到PC

4
我正在尝试使用libstreaming库从Android设备向PC流式传输视频。为了连接这两个设备,我在Android设备上打开了一个热点,并将PC连接到它上面。
我尝试了示例1和2并使它们运行起来。使用示例2,我在Wireshark中收到了许多UDP数据包。但我无法在VLC播放器中打开流。使用示例1时,在Wireshark中什么也没有收到。
有人能告诉我在VLC中要输入什么才能打开流吗?我尝试了很多不同的方法,但不确定是否正确。例如,对于示例1,我认为它应该是类似于rtsp://ipofandroiddevice:port这样的东西。
2个回答

0

你在问题中发布的RTSP URL缺少一些参数,应该是这样的:

rtsp://phone_local_ip:1234?h264=200-20-320-240

其中,200代表buf | 20代表fps | 320代表宽度 | 240代表高度。

库中有一个UriParser类,你可能需要检查其他可能的URL格式。


我正在使用 rtsp://172.xx.xx.67:1777?h264=500000-15-640-480:在Android流服务器上记录:OPTIONS 200 -> DESCRIBE 200 -> SETUP 200 -> PLAY 200 -> TEARDOWN 200 -> 解析CSeq时出错(IllegalStateException:到目前为止没有成功的匹配项)-请求中没有方法。 - Volodymyr Kulyk
我没有遇到过这个问题,但是我有几个建议。尝试将缓冲区减小到200。对我来说,除了320-240之外,其他分辨率都无法正常工作,即使其他分辨率在支持的列表中。 - Umair
谢谢回复。我会尽快尝试您的建议。这里是我所遇到的问题链接,完全被解决了。 - Volodymyr Kulyk
很不幸,我没能让它工作 :( 官方示例也有同样的问题。也许新版本的库有一些错误。你能提供你的旧版本 libstreaming 吗?我想试试看。 - Volodymyr Kulyk
@VladimirKulyk 嗯...抱歉,我没有旧代码,只有最近的版本。不过这是Github,如果你真的需要旧代码,你可以检出一些旧的提交。 - Umair

0

我不熟悉libstreaming库,但它似乎会将RTP数据包发送到一个地址。

在这种情况下,您只需要在计算机上打开rtp://@:端口号以获取视频即可。但如果您从内部网络外进行流媒体传输,请注意NAT问题。


谢谢你的帮助。我尝试了这个但是没有成功。我确定端口没问题因为我可以在Wireshark看到目标端口。我认为问题可能出在其他地方。也许视频编解码器或类似的东西有问题。 - Phil
你尝试过使用-vvv标志打开vlc吗?你应该能够看到它是否正在接收数据包以及live555日志的一般情况。 - Ambi
现在我确定这不是vlc的问题。我创建了一个简单的Android应用程序,使用datagramSocket类永久发送UDP数据包。我还编写了一个小的Java应用程序,只是将接收到的数据包写入控制台。再次,在Wireshark中我能够看到数据包,但我的服务器没有接收到任何东西。也许我正在使用的端口被防火墙阻止了。但如果端口被阻止,我能否使用Wireshark接收数据包呢? - Phil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接