第三方摄像头对接方案,使用ffmpeg进行推流播放(1)

524 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情

http搭建流媒体推送平台

简述

通过http来搭建流媒体的推流平台(对接摄像头使用,通过获取摄像头的rtsp流通过ffmpeg进行转码推送到 nginx 转成 rtmp 最后将 rtmp 转换成 flv 播放路径) 博主也是第一次做流媒体推送,部分理解可能存在问题,如果有误欢迎在下面评论改正

1、搭建nginx 流媒体推送中心

ps:需要有docker环境

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"

image-20220307105306151

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