需要处理部分由专业相机拍摄的演讲视频,由于码率太高导致时长29分钟的视频大小为16GB多, 必须转码才能进行剪辑合成!指定码率854x480, 转完后大概900多MB。
这里使用ffepeg进行视频转码,这里为了同时对多个视频进行转码,在Java文件里写个循环.
把D:\before文件夹下的视频转码到D:\after下:
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class For {
public static void main(String[] args) throws Exception {
File file = new File("D:/before");
File[] array = file.listFiles();
for(int i=0;i<array.length;i++){
System.out.println(array[i].getPath());
String a = array[i].getPath().substring(9, array[i].getPath().length());
System.out.println(a);
a = "D:\\after\\" + a;
new For().videoTransfer(array[i].getPath(),a.replace(".avi", "____.avi"),"854x480");
}
System.out.println("-------------------------视频全部解码完成-------------------------------------");
}
//进行转码
public void videoTransfer(String oldFilePath,String fileSavePath,String screenSize) throws IOException, InterruptedException {
String a = "D:\\windows-ffmpeg\\ffmpeg-latest-win64-static\\bin\\ffmpeg.exe -y -i " + oldFilePath + " -s " + screenSize +" -vcodec libx264 " + fileSavePath ;
Runtime r=Runtime.getRuntime();
Process p=null;
try{
p=r.exec(a);
System.out.println("*************************************************" + fileSavePath);
}catch(Exception e){
System.out.println("错误:"+e.getMessage());
e.printStackTrace();
}
}
}