http搭建流媒体推送平台
简述
通过http来搭建流媒体的推流平台(对接摄像头使用,通过获取摄像头的rtsp流通过ffmpeg进行转码推送到 nginx 转成 rtmp 最后将 rtmp 转换成 flv 播放路径) 博主也是第一次做流媒体推送,部分理解可能存在问题,如果有误欢迎在下面评论改正
1、搭建nginx 流媒体推送中心
须有docker环境 如何部署请查看 → http://www.weinigb.cn/#/info?blogOid=37
1.1、安装docker镜像
docker pull mycujoo/nginx-http-flv-module:latest
1.2、创建docker挂载目录
这里可以根据实际需求进行更改
mkdir -p /data/nginx/conf
mkdir -p /data/nginx/conf.d
mkdir -p /data/nginx/html
mkdir -p /data/nginx/logs
1.3、放置文件
在conf目录和conf.d目录放置对应文件
1.4、在conf.d目录存放
default.conf ps:下载后记得改名为 default.conf
1.5、在conf目录存放
nginx.conf ps:下载后记得改名为 nginx.conf
1.6、在html目录新增1.html文件 网站文件
1.html ps:这个家伙不加没区别 自己随便加一个能打开的html页面就行了
1.7、启动nginx 容器
docker run -d -p 1935:1935 -p 80:80 --name http-flv -v /data/nginx/conf/nginx.conf:/opt/nginx/nginx.conf -v /data/nginx/logs/:/opt/nginx/logs -v /data/nginx/html/:/opt/nginx/html mycujoo/nginx-http-flv-module:latest
如果没有启动成功要先用docker ps -a查看失败的容器,并且用docker rm CONTAILNER ID删除容器ID,再查找问题,然后docker run再启动容器,如果在确保挂载的目录和文件没有问题还是不能启动的话,那么就是权限问题了,网上说的就是在docker run后面加个 --privileged=true参数
2、部署 ffmpeg 拉流转码服务
2.1、安装方法
wget <https://ffmpeg.org/releases/ffmpeg-4.2.3.tar.bz2>
tar jxf ffmpeg-4.2.3.tar.bz2
./configure --enable-shared --prefix=/home/rooun/ffmpeg --disable-yasm
make
make install
–prefix表示程序安装的目录,这里设为/home/looham/ffmpeg。
–enable-shared表示生成动态链接库,可以供以后编程使用,同时生成的可执行程序也依赖这些动态库。
–disable-yasm表示禁用yasm。
如果不禁用yasm 就会报错
2.2、启动命令
ffmpeg -rtsp_transport tcp -i "rtsp://admin:baolu123@192.168.1.108:80/cam/realmonitor?channel=1&subtype=0" -vcodec copy -acodec copy -f flv "rtmp://192.168.230.130:1935/live/mystream"
2.3、查看方式
# rtsp播放方式:
rtmp://192.168.230.130:1935/live/mystream
# flv播放方式
http://192.168.230.130:80/live?port=1935&app=live&stream=mystream