ffmpeg mp4 mkv avi 视频ts切片生成m3u8
时间:2年前 阅读:2646 评论:3
下面转换的方法:
1、首先将视频文件转为视频编码h264,音频编码aac格式的mp4文件
非 MP4 文件可以转为mp4切分,试了下 mkv、avi等都可以。
使用ffprobe查看文件编码方式
ffprobe input.mkv
如果音视频编码为h264/aac则执行
ffmpeg -i input.mkv -acodec copy -vcodec copy out.mp4
否则执行
ffmpeg -i input.mkv -acodec libfaac -vcodec libx264 out.mp4
2、再将视频编码为h264,音频编码为aac格式的mp4文件进行切片
ffmpeg转视频直接可以切边并生成 m3u8(目前用的方式,也可以用选项 segment ):
ffmpeg -i '源文件.mp4' -c:v h264 -flags +cgop -g 30 -hls_time 20 -hls_list_size 0 -hls_segment_filename index%3d.ts 'index.m3u8'
或者这个:
ffmpeg -i input.mp4 -vcodec copy -acodec copy -hls_time 60 -hls_list_size 0 index.m3u8
ffmpeg切片命令,以H264和AAC的形式对视频进行输出(非h264 acc编码的可以用下面的命令)
ffmpeg -i input.mp4 -c:v libx264 -c:a aac -strict -2 -f hls -hls_list_size 0 -hls_time 5 output.m3u8
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
微信扫码关注
更新实时通知
网友评论
admin
回复参数-bsf:v h264_mp4toannexb,这个参数的作用是将MP4中的H.264数据转换成为H.264 AnnexB标准的编码,AnnexB标准的编码常见于实时传输流中。如果源文件为FLV、TS等可以作为直播传输流的视频,则不需要这个参数。
admin
回复hls_base_url 参数用于为M3U8列表的文件路径设置前置基本路径参数,因为在FFmpeg中生成M3U8时写入的TS切片路径默认为M3U8生成的路径相同,但是实际上TS所存储的路径既可以为本地绝对路径,也可以为相对路径,还可以为网络路径
admin
回复ffmpeg -i ten4out.mp4 -c:v libx264 -c:a aac -strict -2 -f hls -hls_list_size 0 -hls_time 2 -bsf:v h264_mp4toannexb -hls_base_url http://200wu.com/test/ ten3.m3u8