大华摄像头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播放器进行播放,那么还需要搭建nginxffmpeg

大体逻辑很简单。

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盘下

 然后把上面的命名合并成一条,就可以咯

看不懂没关系,先跑一遍你就明白了。

好运~