ffmpeg调用多视频解决方案

 拉流推流

 基于长时间占用设备SIM流量的保活机制

 

 

 

摄像头设计方案:

  1. 服务器搭建openvpn环境,引入认证证书
  2. 安装ffmpeg nginx
  3. 设备表添加字段(username,password,clientSN)
  4. 业务字段添加摄像头类型
  5. 增加对于摄像头设备的增删改查接口,持久化操作的同时,维护nginx的配置(操作后需要重启nginx)

         添加时:添加设备的同时,在nginx中添加/hls/{clientSN}路径,其余配置固定,删除,修改同理;

  1. 在设备列表操作中,增加  连接 and 关闭,连接(ffmpeg拉流操作),关闭( kill)
  2. 前端安装vlc视频插件,点击视频监控时,调用视频设备接口(根据1,3,9宫格动态传参)

 使用中参照资料:

openvpn
http://blog.joshua317.com/article/81

安装ffmpeg采坑参照 如果想使用libx164和其他一些函数-percent 

https://blog.csdn.net/zhngyue123/article/details/120216607

https://blog.csdn.net/cwcmcw/article/details/121598555

 

步骤:
yum -y install pcre-devel
yum -y install openssl openssl-devel
后面参照:
https://blog.csdn.net/wenqiangluyao/article/details/97897794
https://blog.csdn.net/qq_36961530/article/details/109365582

nohup ffmpeg -re -rtsp_transport tcp -i "rtsp://admin:hnyx6666@{摄像头IP}:554/Streaming/Channels/102" \
-f flv -vcodec copy -acodec aac rtmp://{nginx IP}/hls/105f >/work/logs/forword.txt &

nohup ffmpeg -re -rtsp_transport tcp -i "rtsp://admin:hnyx6666@{摄像头IP}:1554/Streaming/Channels/102" \
-f flv -vcodec copy -acodec aac rtmp://{nginx IP}/hls >/work/logs/reverse.txt &

ffmpeg -re -rtsp_transport tcp -i "rtsp://admin:hnyx6666@{摄像头IP}:554/Streaming/Channels/102" \
-f flv -vcodec copy -acodec aac rtmp://{nginx IP}/hls/105f

 

ffmpeg  -re -rtsp_transport tcp -i "rtsp://admin:hnyx6666@10.10.1.10:554/Streaming/Channels/102" -vcodec libx264 -preset ultrafast -acodec aac -f flv -strict -2 rtmp://192.168.12.58/hls/105f

 

rtsp://admin:hnyx6666@{摄像头IP}:554

rtsp:都是一种实时的流传输协议,

①username: 用户名。例如admin
②password: 密码。例如admin123
③ip: 为设备IP。例如 192.168.1.68
④port: 端口号默认为554,若为默认可不填写
⑤codec:有h264、MPEG-4、mpeg4这几种
⑥channel: 通道号,起始为1。例如通道1,则为ch1
⑦subtype: 码流类型,主码流为main,辅码流为sub

 

FFMMPEG命令介绍:

②-re :以本地帧频读数据,主要用于模拟捕获设备

③-rtsp_transport tcp: 强制使用tcp读取rtsp流

④-i:输入流

⑤-c:v :-vcodec和-codec:v都是一个意思,都是指定的流设置编码器

⑥libx264:一种编码器

⑦-vf:视频过滤器

⑧-vf scale=600:-1 :在未知视频分辨率的时候,-1的作用是保证纵横比,视频宽600。相关博客

⑨-f:官网中的解释为,强制输入或输出文件格式。 通常会自动为输入文件检测格式,并从输出文件的文件扩展名中猜测该格式,因此在大多数情况下不需要此选项。
⑩-f flv:FLASH VIDEO的简称
⑪-loglevel:字面意思,设置日志等级,fatal指的是指令的错误

⑫fatal > /dev/null 2>&1 :将错误输入到空设备文件,也就是不输出的意思,2表示的是标准错误(0标准输入,1标准输出),2>&1的意思就是讲标准错误(error信息)重定向到标准输出流。总的来说就是不报错,就算报错也只作为输出,不影响后续执行。

①-vprofile:H.264有四种画质级别baseline, extended, main, high,介绍链接

②-acodec:设置音频编解码器。

③aac:AAC(Advanced Audio Coding),中文名:高级音频编码

④-ar:设置音频采样频率,44100hz。

⑤-strict -2:跟标准的严格性。

⑥-ac 1:1就是单声道,2就是立体声

⑦-s:尺寸

⑧-q 10 :质量为十张图

 

obs vlc
问题22050 or 4410
1.https://blog.csdn.net/qq_33979657/article/details/125232412

ffmpeg:
https://gitee.com/hflxhn/summary/blob/master/software/ffmpeg/develop/ffmpeg_search.md

教学资料:
https://gitee.com/hflxhn
https://www.bilibili.com/video/BV1gY411H7Eu/?spm_id_from=333.337.search-card.all.click&vd_source=8967d46d36f51484a501ce84e417a37a
https://www.bilibili.com/video/BV1uD4y197t6/?spm_id_from=333.337.search-card.all.click&vd_source=8967d46d36f51484a501ce84e417a37a


命令:yum install -y screen
创建新窗口 screen -S <窗口名字>
查看创建的窗口 screen -ls
分离窗口 Ctr + a + d
恢复窗口 screen -r <窗口名字>
kill窗口 Ctr + a + k or exit
screen -S 对应ID -X quit

posted @ 2022-11-09 10:28  蔡徐坤1987  阅读(702)  评论(0编辑  收藏  举报