php与hls,流媒体:ffmpeg生成HLS的m3u8与ts片段

本文介绍了如何使用ffmpeg工具将视频切割成ts片段并生成m3u8播放列表,以及ffmpeg的切片参数如-hls_time、-hls_list_size和-hls_wrap的具体用法。由于m3u8-segmenter已废弃,推荐直接使用ffmpeg进行HLS流的创建。在实际操作中,虽然能成功生成HLS流,但在使用vlc播放时遇到画面丢失的问题,这需要进一步解决。
摘要由CSDN通过智能技术生成

ffmpeg将一个完整的视频切割成ts片段,并且生成m3u8文件需要通过m3u8-segmenter来实现,但是m3u8-segmenter的作者已经放弃维护该项目,并且声明该项目过期。

I no longer have much time to work on this project and for the most part it is deprecated now that both ffmpeg and libav have direct support for segmenting and creating m3u files. Quite happy to point this elsewhere if someone else would like to take over the project.

我没有时间来支持这个项目了,因为这个项目已经大幅度落后支持ts切片和生成m3u8文件的ffmpeg和libav项目了,但是无论如何,如果某人喜欢的话也可以研究这个项目,我也会很高兴。

转换方式一

1.直接把媒体文件转为ts

ffmpeg -i cat.mp4 -c copy -bsf h264_mp4toannexb cat.ts

2.使用segment参数进行切片

ffmpeg -i cat.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 2 cat_output%03d.ts

转换方式二

1.ffmpeg切片命令,以H264和AAC的形式对视频进行输出

ffmpeg -i input.mp4 -c:v libx264 -c:a aac -strict -2 -f hls output.m3u8

2.ffmpeg转化成HLS时附带的指令

-hls_time n: 设置每片的长度,默认值为2。单位为秒

-hls_list_size n:设置播放列表保存的最多条目,设置为0会保存有所片信息,默认值为5

-hls_wrap n:设置多少片之后开始覆盖,如果设置为0则不会覆盖,默认值为0.这个选项能够避免在磁盘上存储过多的片,而且能够限制写入磁盘的最多的片的数量

-hls_start_number n:设置播放列表中sequence number的值为number,默认值为0

3.对ffmpeg切片指令的使用

ffmpeg -i output.mp4 -c:v libx264 -c:a aac -strict -2 -f hls -hls_list_size 0 -hls_time 5 data/output.m3u8

将输出的 M3u8 可直接使用vlc打开,发现拖动的时候会出现画面丢失的现象,待解决。

参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值