1. 程式人生 > >Java獲取視訊第一幀做縮圖

Java獲取視訊第一幀做縮圖

Java使用FFmpeg獲取視訊的縮圖


ffmpegPath為FFmpeg.exe所在路徑
upFilePath為視訊的所在路徑(本地路徑)
mediaPicPath為縮圖的儲存路徑(D:/test.jpg)

private void handler(String ffmpegPath, String upFilePath, String mediaPicPath) {
	List<String> cutpic = new ArrayList<String>();
	cutpic.add(ffmpegPath);
	cutpic.add("-i");
	cutpic.add(upFilePath); // 同上(指定的檔案即可以是轉換為flv格式之前的檔案,也可以是轉換的flv檔案)
	cutpic.add("-y");
	cutpic.add("-f");
	cutpic.add("image2");
	cutpic.add("-ss"); // 新增引數"-ss",該引數指定擷取的起始時間
	cutpic.add("0"); // 新增起始時間為第17秒
	cutpic.add("-t"); // 新增引數"-t",該引數指定持續時間
	cutpic.add("0.001"); // 新增持續時間為1毫秒
	cutpic.add("-s"); // 新增引數"-s",該引數指定擷取的圖片大小
	cutpic.add("500*400"); // 新增擷取的圖片大小為350*240
	cutpic.add(mediaPicPath); // 新增擷取的圖片的儲存路徑

	ProcessBuilder builder = new ProcessBuilder();
	try {

		builder.command(cutpic);
		builder.redirectErrorStream(true);
		// 如果此屬性為 true,則任何由通過此物件的 start() 方法啟動的後續子程序生成的錯誤輸出都將與標準輸出合併,
		// 因此兩者均可使用 Process.getInputStream() 方法讀取。這使得關聯錯誤訊息和相應的輸出變得更容易
		builder.start();
	} catch (Exception e) {
		System.out.println(e);
		e.printStackTrace();
	}
}

好啦,去看看你的縮圖吧^_^