我正在开发一个应用程序,可以做一些流媒体。在互联网上搜索后,我使用了标准代码:
VideoView mVideoView = new VideoView(this);
mVideoView.setVideoURI(Uri.parse(videoURL));
MediaController mc = new MediaController(this);
mVideoView.setMediaController(mc);
mVideoView.start();
问题是,这款应用在http://.....3gp或http://...mp3等视频网址上运行得很好。但是,当我使用像rtsp://...
我们有一个TCP流协议,其中我们通过大小作为数据有效负载的前缀。因此,当接收到数据时,可以正确地解码该数据。非常标准的东西。
这对成千上万的人来说工作得很好。不幸的是,我们至少报告了4个客户端连接问题的案例,都是在偏远国家。俄罗斯的一个客户已经能够帮助我们运行许多测试,并缩小了问题的范围。如果我们发送一个前缀大小被强制为0的数据包,那么整个数据包都会通过。如果数据包数据以1c开头,则数据包将无法通过。
我有两个并排的Wireshark从他的电脑捕获的照片,它们显示了这一点:
Working
-------
Russia -> Toronto [SYN]
Toronto -> Rus