ffmpeg视频切片ts并生成m3u8播放文件

本文共有1850个字,关键词:

问题:如何将视频进行切片?

解决:使用ffmpeg工具

方法:

1、安装

sudo apt-get install ffmpeg
或 sudo apt-get install libav-tools

2、查看视频文件编码方式

ffprobe input.mp4
可以以json格式输出
ffprobe -v quiet -print_format json -show_format -show_streams input.mp4

3、将视频文件转为视频编码h264,音频编码aac格式的mp4文件

如果编码为h264/aac,则运行
ffmpeg -i input.mkv -acodec copy -vcodec copy out.mp4
或 avconv -i input.mkv -acodec copy -vcodec copy out.mp4
否则
ffmpeg -i input.mkv -acodec libfaac -vcodec libx264 out.mp4

4、将mp4文件转为ts文件

ffmpeg -i out.mp4 -c copy -bsf h264_mp4toannexb output.ts
如果报错:Packet header is not contained in global extradata
可以使用  ffmpeg -i out.mp4 -c copy -bsf:v h264_mp4toannexb output.ts

5、 将ts切片,并生成m3u8文件

ffmpeg -i output.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 10 output%03d.ts

注:如果第4步出现Unrecognized option 'c' Failed to set value 'copy' for option 'c'的错误时,可能是因为ffmpeg版本太旧,建议更新版本

第4步和第5步可以合并

ffmpeg -i video/vvvv.mp4 -c copy -map 0 -y -f segment -segment_list video/playlist.m3u8 -segment_time 10 -bsf:v h264_mp4toannexb video/cat_output%03d.ts

拓展:

# 获取video/vvvv.mp4的视频时间
ffmpeg -i video/vvvv.mp4 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//
# 生成缩略图, 其中out%d.png 表示生成多张图片%d表示占位符
ffmpeg -i video/vvvv.mp4 -y -f image2 -vf fps=fps=1 out%d.png
# 每一分钟截一次图
ffmpeg -i myvideo.avi -y -f image2 -vf fps=1/60 img%03d.jpg
# 生成10*10的缩略图 fps=fps=1 表示每一帧抓取一次 -y 表示同意覆盖
ffmpeg -i video/vvvv.mp4 -y -f image2 -vf "fps=fps=1,scale=180*75,tile=10x10" out%d.png
# 生成视频封面
ffmpeg -i input.flv -y -f image2 -ss 00:00:14.435 -t 0.001 out.png

参考:

http://blog.csdn.net/u010210927/article/details/51322155
http://blog.csdn.net/liuzhuanshaonian/article/details/52087815
版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。
添加新评论
暂无评论