应用场景:
播放器:射手影音、暴风影音......
转码工具:格式工厂、剪辑工具......
直播、视频加码、滤镜、水印、特效......
百度百科介绍:
https://baike.baidu.com/item/ffmpeg/2665727?fr=aladdin
官网:
http://ffmpeg.org/documentation.html
跟jdk环境变量配置相似
FFMPEG_HOME=C:\ffmpeg
path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;D:\Program Files (x86)\MySQL\MySQL Server 5.5\bin;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%MAVEN_HOME%\bin;%M2_HOME%\bin;%NODE_HOME%;%NODE_HOME%\node_global;D:\initPath\Git\cmd;C:\Program Files\VisualSVN Server\bin;%PYTHON_HOME%;%PYTHON_HOME%\Scripts;%FFMPEG_HOME%\bin;
案例:音频拷贝、音频合并、音频截屏
拷贝命令:
ffmpeg -i 佩恩2.mp4 output.avi
ffmpeg -i 佩恩2.mp4 -an output.avi(去掉原有音质)

合并命令:
ffmpeg -i output.avi -i 美丽的夏威夷.mp3 -t 9 -y 新佩恩2.mp4

音频截屏命令:
ffmpeg -ss 00:00:01 -y -i 新佩恩2.mp4 -vframes 1 新佩恩2视频封面.jpg
-y重新覆盖之前的截图
vframes 后面数字代表帧数

这里以视频合并为例,其他的原理都一样
package com.javaxl.utils;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
/**
 * ffmpeg -i output.avi -i 美丽的夏威夷.mp3 -t 9 -y 新佩恩2.mp4
 * 用Java代码操作ffmpeg达到上面命令操作后的效果
 *
 */
public class FFMpegTest {
	private String ffmpegEXE;
	
	public FFMpegTest(String ffmpegEXE) {
		super();
		this.ffmpegEXE = ffmpegEXE;
	}
	
	public void convertor(String inputAvi, String inputMp3, double time, String outputMp4) throws Exception {
//		ffmpeg -i input.mp4 -y output.avi
		List<String> command = new ArrayList<>();
		command.add(ffmpegEXE);
		
		command.add("-i");
		command.add(inputAvi);
		command.add("-i");
		command.add(inputMp3);
		command.add("-t");
		command.add(String.valueOf(time));
		command.add("-y");
		command.add(outputMp4);
		
		for (String c : command) {
			System.out.print(c + " ");
		}
		
		ProcessBuilder builder = new ProcessBuilder(command);
		Process process = builder.start();
		
		InputStream errorStream = process.getErrorStream();
		InputStreamReader inputStreamReader = new InputStreamReader(errorStream);
		BufferedReader br = new BufferedReader(inputStreamReader);
		
		String line = "";
		while ( (line = br.readLine()) != null ) {
		}
		
		if (br != null) {
			br.close();
		}
		if (inputStreamReader != null) {
			inputStreamReader.close();
		}
		if (errorStream != null) {
			errorStream.close();
		}
		
	}
	public static void main(String[] args) {
		FFMpegTest ffmpeg = new FFMpegTest("C:\\ffmpeg\\bin\\ffmpeg.exe");
		try {
			ffmpeg.convertor("D:\\2019\\media\\output.avi", "D:\\2019\\media\\美丽的夏威夷.mp3", 9, "D:\\2019\\media\\新佩恩2.mp4");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
小结:很多视频剪辑软件的切割,禁掉原声,添加BGM也就那么一回事!!!
over......
                备案号:湘ICP备19000029号
Copyright © 2018-2019 javaxl晓码阁 版权所有