ffmpeg做视频推流直播

最近,有个小项目要求在PC端时时播放监控设备视频。

在网上找了资料,发现视频直播格式的地址有三种格式:rtsp、rtmp、以及http协议中的.m3u8

在这之前一直不知道这几种格式在做视频直播中的区别是什么:

把网上查的资料复制一小段:

RTSP协议:是流媒体协议,RTSP协议是公有协议,有专门的机构维护RTSP协议一般传输的是ts、mp4格式流

RTMP协议:是流媒体协议,RTMP是Adobe的私有协议,没有完全公开,一般传输的是flv、f4v格式流

转载:什么是RTMP 和 RTSP?它们之间有什么区别?_rtmp和rtsp的区别_一口Linux的博客-CSDN博客

本实例拿rtsp格式的直播视频做讲解:

(1) 我是从第三方做监控视频那获取的视频流地址,地址为:

(2)拿到这个地址后,通过ffmpeg转化为在浏览器上可以识别的.m3u8格式的地址

ffmpeg -i rtsp://121.xxxxxxxxxxxxx:554/xxxxxxxxxxxd8-0-0 -c copy -f hls -hls_list_size 0 -hls_time 5 -hls_list_size 50 -hls_flags 50 你本地根目录地址\test\hls\test.m3u8

执行成功后,会一直在对对应的目录下 生成一个test.m3u8视频文件和顺序生成的ts文件

注意:这个执行的进程不要停止,停止后就不生成ts文件,视频直播也会停止播放

参数说明:

  • -hls_time n: 设置每片的长度,默认值为2。单位为秒
  • -hls_list_size n:设置播放列表保存的最多条目,设置为0会保存有所片信息,默认值为5
  • -hls_wrap n:设置多少片之后开始覆盖,如果设置为0则不会覆盖,默认值为0.这个选项能够避免在磁盘上存储过多的片,而且能够限制写入磁盘的最多的片的数量(这个参数存在争议,有的说用-hls_wrap n可以分片,可是我用这个参数报错,看文档发现可以运用-hls_flags n来分片覆盖
  • -hls_start_number n:设置播放列表中sequence number的值为number,默认值为0

具体其他ffmpeg参数可以参考:https://www.cnblogs.com/fieldtianye/p/13427303.html

(3)生成的文件在本地就是这样

(4)建立一个test.html文件,进行测试

 结果:就可以时时播放监控设备的视频了

 这种操作需要在专门做视屏直播服务器下进行操作。因为通过ffmpeg rtsp转m3u8是实时进行的,如果多个视频同时进行转,播放可能有些卡顿,这个可自行测试效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值