ffmpeg+java实现五秒钟剪辑80个视频
最近刷起了抖音,自己搞了几个视频,准备剪辑一下发布,结果,拍摄5分钟,PS剪辑两个小时,给我弄废废了,然后就上网搜了一下,结果搜到了ffmpeg这个神器,一顿研究,感觉幸福多了。
首先来看下官方的解释:
目前只用到了他的视频剪辑功能,但是还可以实现,视频音频合成,格式转换,图片转视频等等比较高级的功能;
我们先来看看视频剪辑功能如何实现的 ,基本上能做到五秒钟,80个视频没问题;
关键语句:
ffmpeg -ss 0 -to 30 -i 输入视频路径 -c copy 输出视频路径
主要参数
-i——设置输入档名。
-f——设置输出格式。
-y——若输出文件已存在时则覆盖文件。
-fs——超过指定的文件大小时则结束转换。
-t——指定输出文件的持续时间,以秒为单位。
-ss——从指定时间开始转换,以秒为单位。
-t从-ss时间开始转换(如-ss 00:00:01.00 -t 00:00:10.00即从00:00:01.00开始到00:00:11.00)。
-title——设置标题。
-timestamp——设置时间戳。
-vsync——增减Frame使影音同步。
-c——指定输出文件的编码。
-metadata——更改输出文件的元数据。
-help——查看帮助信息。
ffmpeg的官网地址是:https://www.ffmpeg.org/
ffmpeg的Github项目地址是:https://github.com/FFmpeg/FFmpeg
上代码:
public class FfmpegTest { private final static String INPUTPATH = "E:\\GoogleDownload\\ccccc\\bgbgbg.mp4"; private final static String OUTPATH = "E:\\GoogleDownload\\ccccc\\ffmpeg\\"; private final static String FFMPEGPATH = " E:\\Download\\ffmpeg.exe "; public static void main(String[] args) { int n = 80; int start =0; for(int i=0;i<n;i++){ try { Runtime runtime = Runtime.getRuntime(); int end = start+30; String cut = FFMPEGPATH + "-ss " +start+" -to " + end + " -i " + INPUTPATH + " -c copy " + OUTPATH +i+ ".mp4"; System.out.println(cut); runtime.exec(cut); start = end; } catch (Exception e) { e.printStackTrace(); } } } }
执行结果:
完美~