Tag: ffmpeg m3u8

1 Posts

thumbnail
Windows上使用ffmpeg 进行视频切片
在今年的任务计划中有一项是做一个视频网站,当然其中需要的就是将mp4转 m3u8 格式,为啥要转为m3u8呢?这是因为m3u8以片段的形式储存,快进的时候拉到哪就看哪,如果是完整的mp4文件,则需要全部下载,浪费服务器带宽和用户时间。 1、下载ffmpeg https://ffmpeg.zeranoe.com/builds/ 下载完成后解压到任务目录(尽量不要有中文) 然后设置bin目录到系统环境变量(path) 2、对视频进行转码(转为MP4) 为啥要转码呢? 将视频文件转为视频编码h.264,音频编码aac格式的mp4文件 ffmpeg -i out.mp4 -c:v libx264 -strict -2 real.mp4 out.mp4 是待转码的文件(可以是其他格式,比如avi......之类的) real.mp4 是转码输出文件 libx264 转为 h.264编码 这里我为啥要讲mp4再转码一次呢?因为我这个mp4视频文件不是h.264编码,所以需要再转一次,不然到后面切片的时候会遇到很多莫名其妙的问题。 这个过程一般比较长,根据电脑CPU和视频长度决定。当然也可以使用GPU进行转码,这样更快~ 3、将MP4转换为ts格式文件(单个ts) 命令格式如下: ffmpeg -y -i 待转换mp4文件路径 -c copy -vbsf h264_mp4toannexb 目标ts文件 ffmpeg -i real.mp4 -c copy -vbsf h264_mp4toannexb output.ts 转码成功后会生成ts文件 4、将ts切片,并生成m3u8文件 命令格式 ffmpeg -i output.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 5 output%03d.ts output.ts 已生成的ts文件 playlist.m3u8 待生成的m3u8文件名 5 切片时间,表示隔几秒进行切一个文件 output%03d.ts 生成切割ts文件名,output%03d.ts 代表生成output001.ts、output002.ts这样的格式,03d 可以随意修改,占位符。 这里我新建一个文件夹用了存放切片的m3u8 和 output.ts 文件,那么命令则是 ffmpeg -i output.ts -c copy -map 0 -f segment -segment_list void/playlist.m3u8 -segment_time 5 void/output%03d.ts 这样就算切片成功了,视频被切割成以5秒大小的ts文件。 参考文章: https://blog.csdn.net/hejjunlin/article/details/71001593(FFmpeg总结(九)用ffmpeg进行切片生成m3u8索引文件) https://blog.csdn.net/yeyinglingfeng/article/details/7874932(使用ffmpeg将视频转为x264编码的mp4文件)