使用ffepeg进行视频转码

针对高码率的29分钟演讲视频,由于其16GB的巨大体积,需要进行转码以便于剪辑合成。通过设定码率为854x480,转码后视频大小约为900MB。本文介绍了使用ffmpeg工具,并在Java中实现批量转码的循环操作,将D:efore文件夹下的所有视频转码至D:after目录。
摘要由CSDN通过智能技术生成

需要处理部分由专业相机拍摄的演讲视频,由于码率太高导致时长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(); 
		}
	}
	}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值