RTSP转HLS(ffmpeg+ docker)超简单

可以实现直接将监控器的rtsp流地址转换成手机浏览器可以播放的格式

环境准备

  1. 确保服务器有docker和nginx
  2. 先拿到摄像头的RTSP地址
  3. vi 新建以下两个sh脚本

start.sh

#!/bin/sh


./kill.sh


channel[0]=rtsp://admin:4321@5678@192.168.100.100:554/h264/ch1/main/av_stream
channel[1]=rtsp://admin:4321@5678@192.168.100.101:554/h264/ch1/main/av_stream

for (( i = 0; i < ${#channel[*]}; i++ )); do
    nohup docker run -v /video:/video  jrottenberg/ffmpeg:latest -rtsp_transport   tcp -i ${channel[$i]} -fflags flush_packets -max_delay 1 -an -flags -global_header -hls_time 2  -hls_list_size 5  -hls_wrap 10  -vcodec copy -s 216x384 -b 1024k -y  /video/$i.m3u8  >/dev/null 2>&1 &
done


kill.sh

#!/bin/sh

pids="`ps -ef |grep ffmpeg |grep -v -e grep -e killkeys |awk '{print $2}'`"
if [ -z "$pids" ];then
  #echo empty
  exit 0
fi
echo "kill pid:"$pids
kill -9 $pids

docker rm $(docker ps -a | grep ffmpeg  | awk '{print $1}')
  1. 直接./start.sh 启动 会帮你杀掉之前的进程
  2. nginx直接把生成出来的.m3u8文件代理出来就可以了

注意啊!

  • start.sh 里面的docker启动命令:目录挂载你可以自己设置
  • 前端的播放器自己百度一大把
  • 第一次执行docker的命令需要pull 所以会很慢
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
FFmpeg是一款强大的多媒体处理工具,可以用来完成各种视频音频处理任务,其中包括将RTSP换成HLS流。 RTSP(实时流媒体传输协议)是一种用于实时数据传输的网络协议,常用于视频流的传输。HLS(HTTP Live Streaming)是一种流媒体传输协议,可以将视频切分为多个小文件,并通过HTTP协议分段传输。 要实现RTSPHLS,首先需要安装FFmpeg工具。在安装完毕后,可以使用以下命令行参数来进行换: ```shell ffmpeg -i rtsp://source_url -c:v copy -c:a copy -hls_segment_type mpegts -hls_time 10 -hls_list_size 0 -f hls output.m3u8 ``` 上述命令中,使用`-i`参数指定RTSP输入源的URL,`-c:v copy`和`-c:a copy`表示不对视频和音频进行编码,直接复制到HLS输出中。 `-hls_segment_type mpegts`指定输出的HLS段文件类型为`mpegts`,`-hls_time 10`表示每个HLS段的时长为10秒,`-hls_list_size 0`表示不限制目标播放列表的最大文件数量。 最后使用`-f hls`参数指定输出格式为HLS,并指定输出文件名为`output.m3u8`。 执行上述命令后,FFmpeg会将RTSP换成HLS流。输出的`output.m3u8`文件是一个HLS播放列表文件,其中包含了各个切片文件的URL地址。 通过将`output.m3u8`和切片文件(.ts文件)部署在HTTP服务器上,即可使用支持HLS协议的播放器进行在线播放。 需要注意的是,换过程中可能会出现一些兼容性或格式方面的问题。在使用FFmpeg进行RTSPHLS时,可以根据具体需求调整命令行参数以达到最佳效果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值