应用场景:
播放器:射手影音、暴风影音......
转码工具:格式工厂、剪辑工具......
直播、视频加码、滤镜、水印、特效......
百度百科介绍:
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晓码阁 版权所有