ffmpeg
ffmpeg -allowed_media_types video -rtsp_transport tcp -i rtsp://admin:swgy12345@10.9.9.2:554/Streaming/Channels/1002?transportmode=unicast -c:v libx264 -f flv -r 24 -g 24 -s 720x480 rtmp://10.3.8.2:1935/live/admin10992to192168112
以前使用海康设备进行播放时出现的问题
旧的url
rtsp://192.168.10.111/H.264/ch1/sub/av_streamrtsp://192.168.10.151/H.264/ch1/main/av_stream
rtsp://192.168.10.111:554/PSIA/streaming/channels/101
rtsp://192.168.10.111:554/streaming/channels/101
admin 12345
新的url
rtsp://192.168.17.249:554/Streaming/Channels/101?transportmode=unicast /*表示以单播方式时取通道1的主码流*/rtsp://192.0.1.100:554/Streaming/Channels/102/*表示以单播方式取通道1的子码流*/
rtsp://192.0.1.100:554/Streaming/Channels/102?transportmode=multicast /*表示以多播方式取通道1的子码流*/
问题1:
海康dvr第一路流的播放主码流有问题,子码流没问题,第2-4路流没问题。sprop-parameter-sets不正确或者没有。可能是:1通道不支持主码流播放,子码流可以播。
问题2:图像不完整
通过调试,发现111这台dvr第一路主码流的sps解析出来之后704*288,不过从网页上看,设置的是704*576。放入解码器播放图像不完整。但并不总是如此。
问题3:tcp和rtcp同时使用
更多的原因是使用tcp模式连接,但是还需要rtcp,而apple的rtsp库如果使用tcp连接是不需要rtcp的。但是使用udp还是出现了问题,音频数据一直发送,但是视频数据发一点就不再发送。
附:海康rtsp中的配置信息
DESCRIBE rtsp://192.168.10.243:554/PSIA/streaming/channels/102 RTSP/1.0\\r\\nRTSP/1.0 200 OK
CSeq: 0
Content-Type: application/sdp
Content-Length: 521
v=0
o=- 1347037163964609 1347037163964609 IN IP4 192.168.10.243
s=Media Presentation
e=NONE
b=AS:5100
t=0 0
a=control:*
m=video 0 RTP/AVP 96
b=AS:5000
a=control:trackID=1
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=420029; packetization-mode=1; sprop-parameter-sets=Z0KAHoiLUFgJNCAAAOEAACvyAIA=,aM44gA==
m=audio 0 RTP/AVP 0
b=AS:50
a=control:trackID=2
a=rtpmap:0 PCMU/8000
a=Media_header:MEDIAINFO=494D4B48010100000400010010710110401F000000FA000000000000000000000000000000000000;
a=appversion:1.0
RTSP/1.0 200 OK
CSeq: 0
Content-Type: application/sdp
Content-Length: 456
可能有些设备又是这样的
v=0
o=- 1109162014219182 0 IN IP4 0.0.0.0
s=HIK Media Server
i=HIK Media Server Session Description : standard
e=NONE
c=IN IP4 0.0.0.0
t=0 0
a=control:*
a=range:npt=0.0-
m=video 0 RTP/AVP 96
i=Video media
a=control:trackID=1
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=4D0014;packetization-mode=0;sprop-parameter-sets=DG/Ir/:14194:0:99999:7:::
guest:!:15302:0:99999:7:::
h,
//上面一个参数可能只有 a=fmtp:96 profile-level-id=4D0014;packetization-mode=0
m=audio 0 RTP/AVP 0
i=Audio media
a=control:trackID=2
a=rtpmap:0 PCMU/8000
a=Media_header:MEDIAINFO=494D4B48010100000400000110710110401F000000FA000000000000000000000000000000000000;
a=appversion:1.0
安防RTSP无插件直播方案及RTSP配置规则
LiveNVR搭建无插件直播方案时,采用行业标准的通用协议RTSP/Onvif接入摄像机IPC摄像机 / NVR硬盘录像机设备;Onvif是摄像机的发现与控制管理协议,Onvif用到的流媒体协议也是RTSP,在摄像机NVR流媒体接入上,就是直接采用统一的RTSP协议接入;
在RTSP协议上,由于各个厂家都有不同的处理方法,比如:海康、大华、雄迈、宇视、天地伟业等厂家的RTSP地址规则有所区别。
RTSP配置规则
大华产品 rtsp://username:password@ip:port/cam/realmonitor?channel=1&subtype=0
username: 用户名
password: 密码
ip: 为设备IP
port: 端口号默认为554,默认554时可不填写
channel: 通道号,起始为1。例如通道2,则为channel=2
subtype: 码流类型,主码流(subtype=0),辅码流(subtype=1)
示例: rtsp://admin:admin@127.0.0.1:554/cam/realmonitor?channel=1&subtype=1
海康-预览取流-旧版规则(2012年之前的设备只持旧版规则) rtsp://<username>:<password>@<ipaddress>:<port>/<videotype>/ch<id>/<streamtype>/av_stream
username: 用户名
password: 密码
ipaddress: 设备IP
port: 端口号默认为554,默认可不填写
videotype:视频编码格式,如:h264、mpeg4
ch: 通道号,起始为1。例如通道1,则为ch1
streamtype: 码流类型,主码流(main),辅码流(sub)
示例: rtsp://admin:admin@127.0.0.1:554/h264/ch1/main/av_stream示例: rtsp://admin:admin@127.0.0.1:554/mpeg4/ch2/sub/av_stream
海康-预览取流-新版规则 rtsp://<username>:<password>@<ipaddress>:<port>/Streaming/Channels/<id>(?parm1=value1&parm2=value2)
username: 用户名
password: 密码
ipaddress: 设备IP
port: 端口号默认为554,默认可不填写
id:通道号+0+码流类型码流类型:1-主码流、2-子码流、3-第三码流;如 1202 表示第12通道子码流
parms 其他入参 如 transportmode=unicast (默认单播)transportmode=multicast (多播)
示例:rtsp://admin:admin@127.0.0.1:554/Streaming/Channels/101
海康-回放取流 rtsp://<username>:<password>@<ipaddress>:<port>/Streaming/tracks/<id>(?parm1=value1&parm2=value2)
username: 用户名
password: 密码
ipaddress: 设备IP
port: 端口号默认为554,默认可不填写
id:通道号+0+码流类型码流类型:1-主码流、2-子码流、3-第三码流;如 1202 表示第12通道子码流
parms 其他入参 如 starttime=20131013t093812z&endtime=20131013t104816z ;具体格式是YYYYMMDD”T”HHmmSS.fraction”Z”,Y是年,M是月,D是日,T是时间分格符,H是小时,M是分,S是秒,Z是可选的、表示Zulu(GMT) 时间
示例:rtsp://admin:admin@127.0.0.1:554/Streaming/tracks/101?starttime=20180902t123812z&endtime=20180902t124816z
OPTIONS发送的问题
RTSP接入方面,live555和ffmpeg,是市面上兼容性最强的两个组件,各有长短,live555结构复杂、ffmpeg整体庞大;以live555作为摄像机RTSP接入的方案,能非常方便实现部分功能的定制,也会遇到OPTIONS发送的问题:
当采用RTP over UDP/TCP方式在取流的过程中,RTSPClient(live555)可能长时间都在从RTSPServer(IPC/NVR)取流,但缺没有向RTSPServer发送保活报文,如果服务器端启动了Session保活检测机制(参看live555中RTSPServer中noteliveness实现),服务器端长时间没有收到客户端发送的数据包,就会认为客户端连接是假连接,主动断开与客户端的连接(不管客户端是否正在取流);
为了解决上述的问题,大部分的RTSPClient客户端都会定时(例如30s)向RTSPServer发送OPTIONS(有的也有可能发送的是GET_PARAMETER)命令,类似于保活报文,这样服务器端就能正常地发送直播数据流了;
并不是所有的RTSPServer都做的那么好,就比如海康的某些IPC/NVR型号,当RTSPClient在拉流的过程中,突然发送OPTIONS保活报文,就像是发送了一个垃圾数据一样,RTSPServer自动就将整条RTSP连接断开了,导致RTP取流也随着停止了,我们只能在这类设备中,选择不发送OPTIONS保活包;
LiveNVR 安防RTSP无插件直播方案
LiveNVR解决了上述各种问题,是一个传统安防互联网化的解决方案:
支持PC端/Android安卓端/iOS苹果端/微信端无插件化观看;
支持微信扫描二维码观看;
基于web网页/无插件播放;
支持海康/大华等市面上几乎全部的网络摄像机接入;
实时IP Camera/NVR直播画面实时直播监控;
支持录像及录像回看;
兼容windows和linux双系统;
私有云部署搭建自己的业务场景;
更多推荐
所有评论(0)