FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序,其稳定性受到从事视频方面工作者的喜爱。
最近在做一个视频方面的项目,就用到了ffmpeg,真的很好用,昨天通过ffmpeg将mp4视频转换m3u8格式, 将视频均匀分割,在播放时可以很快的进行加载完成并进行播放,比传统的mp4格式加载更快,更能将浏览器的压力降低,因为加载一段十几兆的视频比加载几百兆视频更加容易,对一些电脑配置较低的用户尤为重要,因为在做的这个项目主要是在IE浏览器使用,而IE通过h5播放会比较卡,用谷歌内核的浏览器可能感觉不到,所以如果你的项目也是在IE播放,m3u8格式的视频绝对是一大优化利器,我做的这个项目是一个页面加载两个视频,对我说优化效果更令人满意。
m3u8转mp4
ffmpeg -i YTDYK_151.0-155.2_1920.mp4 -y -map 0 -f segment -segment_time 10 -segment_list YTDYK_151.0-155.2_1920.m3u8 -segment_list_entry_prefix http://192.168.1.67/video/ YTDYK_151.0-155.2_1920-%03d.ts
- ffmpeg是ffmpeg可执行程序,实际使用需加路径
- -y 是否覆盖
- -segment_time 每段视频时间 必须是10的倍数
- -segment_list m3u8的存储路径
- -segment_list_entry_prefix 生成m3u8列表文件的,可以用来增加绝对路径和相对路径
- 最后则是ts切片文件的存储路径
为了防止新手容易出现问题,附上我写的一个demo,希望能帮到你
String cmd="D:\\IdeaReq2\\src\\main\\resources\\ffmpeg\\ffmpeg.exe -i " +
"C:\\Users\\Administrator.USER-20190902AI\\Desktop\\2c92d0fb6cfa3491016cfa6ea9bc0078\\2019-06\\2c92d0fb6cfb1ddd016cfb246f2e001c\\0\\001\\YTDYK_151.0-155.2_1920.mp4" +
" -y ";
cmd+="-map 0 -f segment -segment_time 10 -segment_list C:\\Users\\Administrator.USER-20190902AI\\Desktop\\2c92d0fb6cfa3491016cfa6ea9bc0078\\201906\\2c92d0fb6cfb1ddd016cfb246f2e001c\\0\\001\\YTDYK_151.0-155.2_1920.m3u8" +
" -segment_list_entry_prefix http://192.168.1.67/video/ C:\\Users\\Administrator.USER-20190902AI\\Desktop\\2c92d0fb6cfa3491016cfa6ea9bc0078\\2019-06\\2c92d0fb6cfb1ddd016cfb246f2e001c\\0\\001\\YTDYK_151.0-155.2_1920-%03d.ts";
Process process = Runtime.getRuntime().exec(cmd);
System.out.println("---2--------");
BufferedReader br= new BufferedReader(new InputStreamReader(process.getErrorStream()));
String line = null;
while ((line = br.readLine()) != null) {//输出控制台日志
System.out.println(line);
}
process.waitFor();
System.out.println("---3--------");