码迷,mamicode.com
首页 > 其他好文 > 详细

VLC通过RTSP地址向IPC取流播放不了问题排查

时间:2019-12-20 00:59:41      阅读:401      评论:0      收藏:0      [点我收藏+]

标签:是什么   通过   链接   码流   服务器   指令   class   http   没有   

问题现象:现场hik ipc在vlc通过rtsp取流地址(rtsp://admin:xxxxxxxx@44.110.81.45:554/Streaming/Channels/101?transportmode=unicast)取流,发现vlc界面并没有画面,但是看编码统计却是有收到码流包的。而且换另一个ipc可以预览,仅仅这个可以而已。

分析:据我所了解,rtsp取流跟onvif是一致的,也就是根据报文交互来确定取流、发流的相关属性。思路:分别抓包,看报文,对比,猜测,验证。

首先抓了个能预览的:

技术图片

 

 来的码流包是RTP?纳尼,发现了些什么东西。熟悉的作案手法,RTP分析一波:

技术图片

 丢包率看起来还稍微能接收的样子。此时想起现场反馈过这个ipc能预览,但是有时会卡,猜测就是这1%+的丢包所致,继续看其他的:

技术图片

 另外一个是UDP,转RTP分析看看:

技术图片

 WC!这丢包率能播放就神奇了,再看另一个,

技术图片

 好吧,基本上能确定是网络丢包所导致的。但是平常见到hik rtsp取流不都是tcp吗,怎么这里是udp的?问了下,才知道原来vlc可以设置的。

技术图片

 默认是通过HTTP进行流传输,也就是udp,网络不太好的时候,要改成tcp才行。测试一发,果然没问题。

到这里问题是查出原因了,接下来继续了解下rtsp吧!抓一下tcp和udp的报文,compare对比一下看看有何差异:

技术图片

就是SETUP指令,这里默认是通过UDP进行流传输,指定TCP后才会通过tcp流传输。

 

然后看到这篇文章,讲解很详细!转载一下:RTSP请求详解及RTP 基于UDP和TCP协议传输数据的对比,好像链接不太稳定,贴一下以留着自己记录吧。

以下内容转载:

下面是我用VLC播放器获取海康NVR视频的截图(此次获取是基于TCP的):

技术图片

下面来看一下针对每一条消息的详细截图:

客户端发送的OPTION消息:

技术图片

服务器对OPTION回复的200OK消息:

技术图片

客户端发送的DESCRIBE不带鉴权的消息:

技术图片

服务器回复的401消息:

技术图片

客户端请求带鉴权的DESCRIBE消息:

技术图片

服务器回复200OK消息带SDP消息体:

技术图片

客户端请求的SETUP消息:

技术图片

服务器对SETUP回复的200OK消息:

技术图片

客户端发起PLAY消息:

技术图片

服务器针对PLAY回复的200OK消息:

技术图片

服务器发送完PLAY的200OK消息以后就开始发送数据,RTP基于TCP的数据传输截图如下:

技术图片

技术图片

客户端发送的TEARDOWN消息:

技术图片

VLC停止播放时没有收到服务器针对TEARDOWN消息发送的200OK消息,不知道是什么原因,初步怀疑是海康NVR没有发送这个消息。

以上是基于TCP的截图,下面是针对UDP的截图,只截取和TCP不同的部分,相同的部分不再截图,请参考TCP截图:

第一个不同点是SETUP消息及回复部分:

技术图片

技术图片

数据传输部分:

技术图片

总结:以上是RTP基于TCP和UDP传输数据不同的地方

VLC通过RTSP地址向IPC取流播放不了问题排查

标签:是什么   通过   链接   码流   服务器   指令   class   http   没有   

原文地址:https://www.cnblogs.com/lynsen/p/12070938.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!