大华摄像头WEB集成--rstp拉流
之前没有做过类似的开发,导致走了很多坑。那就记录一下呗。
什么是rstp?
RSTP就是R.S.T.P的组合。那么什么是组合.....换一句话说,有了这个组合能解决什么问题。不要行不行?.....
开玩笑的,哈哈~
rstp就是一个流。至于什么流百度一下了。
最后的成果~~~~~~~(这是html)
先熟悉一下大华web的后台界面


本片文只需要关注这RTSP就行了。看看端口号是多少~~~~~~
因为rtsp流不能直接播放,得需要一些工具,比如我用的就是VLC media player
先打开--》 媒体--》打开网络串流--》网络

大华的rtsp地址
rtsp://user:password@ip:port/cam/realmonitor?channel=2&subtype=1
ip:web后台的IP
port: 上面咱们看到的rtsp的端口,默认是554,
channel: 管道
subtype: 码流
得到rtsp地址后直接放入VLC的URL中,点击播放即可。
VLC报错:
您的输入无法被打开:
VLC 无法打开 MRL「rtsp://.........」。详情请检查日志。
- 检查URL是否写错
- 检查服务器是否限制了地区的IP。(有些服务器只能在当省市级访问)
- 检查你的网络环境用 telnet命令 是否能连接到服务器的554端口(有些企业的网络是屏蔽掉端口的,导致你的网络不能与摄像头所在的服务器进行通信)
上面就是我遇到过的,其他的情况不是很清楚呢!
如果能使用VLC播放器进行播放,那么还需要搭建nginx和ffmpeg
大体逻辑很简单。
ffmpeg 拉取 rstp流 然后转成m3u8视频,在通过nginx安装的m3u8模块并指向本地磁盘就能实现实时访问呢。
NGINX
location / {
types{
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root 'C:\\1\\'; # ffmpeg对rstp转换后存放的m3u8文件地址
add_header Cache-Control no-cache;
add_header Access-Control-Allow-Origin *;
}
ffmpeg -rtsp_transport tcp -i "rtsp://................." -c copy -f
hls -hls_time 2.0 # 每个视频大小(因为会先将rtsp转成ts,然后合并成m3u8文件)
-hls_list_size 0 # 视频列表大小,写个0就行
-hls_wrap 15 # 最多存储 15个文件,超过了就会覆盖之前的文件
C:\\1\\output.m3u8 # 把流转成m3u8文件并存储在C盘下
然后把上面的命名合并成一条,就可以咯
看不懂没关系,先跑一遍你就明白了。
好运~
