流媒体服务搭建(nginx+ffmpeg+nginx_rtmp_module)详解
最近在做有关摄像头的直播的测试,原本采用的方案是EasyNVR(个人使用免费,商业收费)
通过了解,发现可以自己搭建流媒体服务来代替这个方案,下面记录搭建流媒体服务的详细步骤!!!!
一、搭建前准备
1、下载nginx(http://nginx-win.ecsds.eu/download/nginx 1.7.11.3 Gryphon.zip)
2、下载ffmpeg(http://www.ffmpeg.org/download.html)
3、下载nginx_rtmp_module(https://github.com/arut/nginx-rtmp-module)
二、环境介绍
首先,我是采用的设备是海康的设备,然后我是通过rtsp地址去摄像头拿到的流,然后通过自己搭建的流媒体服务,转成我想要的RTMP地址(当然可以转成你想要的格式)
下面介绍海康设备的rtsp地址的规范(其他厂家的可以自己进行查询)
注意: 如果只是向要拿到设备主码流的地址,那么可以使用下面的这个方式
rtsp://<账号>:<密码>@<ip>:554/11 //亲测有效
三、流媒体服务搭建
将上述环境下载、解压完成之后,再进行下面的步骤
- 完成之后的样子:
- 步骤如下:
1、将nginx_rtmp_module放入nginx目录下,如下
2、进入上述图片的conf目录 ,复制一份nginx-win.conf改名为nginx.conf(因为nginx会默认加载这个文件)
3、拷贝 如下代码
4、复制上述代码到如下位置
5、注意下面这个地方的端口冲突
6、搭建完成之后测试
在nginx目录下cmd , 输入 start nginx
在浏览器输入 http://localhost:<上述端口> (我的:http://localhost:8085)如果出现下面界面就成功了
7、解压ffmpge就好了,进入bin目录输入cmd就可以输入指令进行推流了
//测试一:采用本地以后的MP4格式的视频试试
ffmpeg -re -i "D:\imgs\1.mp4" -f flv "rtmp://localhost:1935/mytv/test"
注:这里可以采用VLC 进行观看
测试画面:
8、摄像头的流拉取
//输入
ffmpeg -i "<rtsp地址>" -vcodec copy -acodec copy -f flv "rtmp://localhost:1935/mytv/test1"
结束:这里就不贴出出来的画面了(原因是因为如果用这种命令的方式进行推流,我出现了下面两个问题)
- 延时很高(大概有10秒左右的延时)
- 出来的画面直接是打了马赛克的那种画面(不忍直视)
解决办法有么?肯定有啊,想知道么??????