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

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

 

转换方式一

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 

 

参数:

-hls_base_url   m3u8播放地址前缀

-segment_list_entry_prefix  m3u8播放地址前缀

-s 1280×720    :  720p分辨率
-b 1500k  比特率
-r 设定帧速率,默认为25
-aspect 设定画面的比例

-break_non_keyframes ( -break_non_keyframes 1 为每片切为绝对相同时间)

 

一些提示:

强制码率
-b 1500k -minrate 1500k -maxrate 1500k -bufsize 1835k

压缩快慢
-preset ultrafast,superfast, veryfast, faster, fast, medium, slow, slower, veryslow

固定码率系数模式(影响视频清析度)
-crf 0-51 (越小越清析0为无损)

用 two-pass 可以达到不变的码率?
ffmpeg -i input -c:v libx264 -b:v 1M -maxrate 1M -bufsize 2M -pass 1 -f mp4 /dev/null
ffmpeg -i input -c:v libx264 -b:v 1M -maxrate 1M -bufsize 2M -pass 2 output.mp4

 

当你输出的视频无法播放 时,试试 vf format=yuv420p 参数

 

帮助

ffmpeg -h full

man ffmpeg

 


 

我的例子:

ffmpeg -i 123.mp4 -c:v libx264 -c:a aac -strict -2 -f hls -hls_time 10 -hls_list_size 0 output.m3u8 (已测)

ffmpeg -i 123.mp4 -codec copy -vbsf h264_mp4toannexb -map 0 -f segment -segment_list out.m3u8 -segment_time 10 out%03d.ts (已测) (-break_non_keyframes 1 为每片切为相同时间)

ffmpeg -i 123.mp4 -codec copy -vbsf h264_mp4toannexb -map 0 -f segment -segment_list out.m3u8 -segment_time 10 -break_non_keyframes 1 -s 1280×720 -b 1500k out%03d.ts

ffmpeg -i 123.mp4 -strict -2 -c:v libx264 -s 1280×720 -c:a aac -f hls -hls_time 100 -hls_list_size 0 -b 1500k test_480_x.m3u8 (分辨率起作用)

ffmpeg -i 123.mp4 -strict -2 -c:v libx264 -s 1280×720 -c:a aac -f hls -hls_time 100 -hls_list_size 0 -b 1500k -minrate 1500k -maxrate 1500k -bufsize 3000k -hls_base_url http://localhost/php4hls/test/ test_480_x.m3u8 (最终使用)

参考

https://my.oschina.net/ososchina/blog/828100

http://www.cnblogs.com/zhongbin/p/4191361.html

http://jueshizhanhun.blog.51cto.com/4372226/1368768/

http://www.cnblogs.com/dwdxdy/p/3240167.html

http://blog.csdn.net/jookers/article/details/21694957/

流媒体:ffmpeg生成HLS的m3u8与ts片段
标签:     

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*