RTSP视频流直播实现(海康) 2020-05-27 程序之旅,记录 暂无评论 1414 次阅读 ## RTSP视频流直播实现(海康) [TOC] ### 简述 ![直播2](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/worker/20200526102517.png) 搭建需要使用到两个第三方工具,nginx和ffmpeg,nginx用于视频流转发,ffmpeg用于做视频流RTSP转RTMP ### 系统环境 - ubuntu 16.04 - DS-2CD2T25D 海康设备 - ### nginx搭建 ubuntu这里使用命令行apt-get安装 ```sh $ sudo apt-get install software-properties-common python-software-properties $ sudo add-apt-repository ppa:nginx/stable $ sudo apt-get update $ sudo apt-get install nginx $ sudo apt-get install libnginx-mod-rtmp ``` 安装完成后配置rtmp ```sh $ sudo su $ cd /etc/nginx $ vim nginx.conf ``` 添加以下内容 ``` rtmp{ server{ listen 1935; application live{ live on; record off; } application hls{ live on; hls on; hls_path nginx-rtmp-module/hls; hls_cleanup off; } } } ``` #### 使用 ```sh $ sudo nginx ``` **基本命令** - 开启:nginx - 测试配置有效性:nginx -t - 加载配置文件:nginx -s reload - 指定配置文件:nginx -c nginx2.conf - 关闭:nginx -s stop ### ffmpeg搭建 官网下载ffmpeg压缩文件,我这里下载的是4.2.3版本 官网下载地址:http://ffmpeg.org/download.html 安装必要库 ```sh $ sudo apt-get install yasm ``` 下载ffmpeg压缩包完成后,开始编译配置 ```sh $ sudo su $ mkdir /usr/local/ffmpeg $ cd /usr/local/ffmpeg 拷贝ffmpeg压缩文件到该目录 $ tar -xvjf ffmpeg-4.2.3.tar.bz2 $ ./configure --enable-shared --prefix=/home/yourname/Software/ffmepeg/install $ make $ make install $ vim /etc/ld.so.conf.d/libc.conf 另起一行,加入路径动态库路径 /usr/local/ffmpeg/lib $ ldconfig 加入全局环境变量 $ vim ~/.bashrc # ffmpeg FFMPEG=/usr/local/ffmpeg export PATH= $FFMPEG/bin:$PATH $ source ~/.bashrc $ ffmpeg -version ``` #### 使用 开启视频流转换 ```sh $ ffmpeg -i "rtsp://admin:hik12345@192.168.1.156:554/Streaming/Channels/101?transportmode=unicast" -vcodec copy -f flv -s 1280x720 -q 5 rtmp://127.0.0.1:1935/live/test ``` > rtsp://admin:12345@172.6.22.234:554/Streaming/Channels/101?transportmode=unicast > rtsp://admin:12345@172.6.22.106:554/Streaming/Channels/102?transportmode=unicast (单播) > rtsp://admin:12345@172.6.22.106:554/Streaming/Channels/102?transportmode=multicast (多播) **参数说明** - i 设定输入流 - f 设定输出格式 - ss 开始时间 - b 设定视频速率,默认为200bit/s - r 设定帧速率,默认为25 - s 设定画面的宽高 - aspect 设定画面的比例 - vn 不处理视频 - vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码 - an:去除音频流 - vn: 去除视频流 PS: 海康设备的rtsp流的视频播放有许多方法,上边的使用的是RTMP的流播放,使用浏览器直播视频,延迟相对也比较低。还有其他的几种方案,如下: - WebRTC - HLS - 安卓app - 苹果app 之前用的是hls的方法,延迟特别高,nginx将接受到的rtsp流缓存到一个ts文件中,然后继续更新m3u8文件,m3u8的文件保存了最近视频或音频片段的索引,而前端直接读取的是m3u8的缓存,这样达到近似直播的效果。 一般来说HLS方式读取直播流,延迟是2-3个ts文件的时长。 打赏: 微信, 支付宝 标签: none 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。