一开始我看的教程是使用windows版的ffmpeg,使用方法就是从官网下载已经编译好的,直接调用/bin文件夹下的ffmpeg.exe.
下载
我是在mac环境下使用,官网其实也有已经编译好的。在官网http://ffmpeg.org/download.html#build-mac下载,
如图1:
我选择的是Static and shared builds for macOS 64-bit
如图2:
1.Version 选择20180706,
2.Architecture:选择macOS 64-bit ,
3.Linking :选择Static。
然后将文件解压,这个版本应该是直接编译好的,直接使用bin文件夹目录下的ffmpeg 就可以用了。
控制台里使用:
官方提供的命令:用于格式转换
$ ffmpeg -i input.mp4 output.avi
实际操作:
1.我把它解压到文稿目录下:
2.在控制台下进入ffmpeg的bin目录下
3.调用ffmpeg进行格式转换,转换的文件:123.mp4,转换后的文件out123.avi
$ ffmpeg -i 123.mp4 out123.avi
使用java调用fmpeg命令进行格式转换
实现的原理:ffmpeg都是通过命令窗口输入命令进行格式转换,在java环境中可以通过使用ProcessBuilder,通过字符串组合成命令,进行ffmpeg命令的使用。
,那么我们先创建一个名为FFMpegTest的类:
public class FFMpegTest {
private String ffmpegEXE;
public FFMpegTest(String ffmpegEXE) {
super();
this.ffmpegEXE = ffmpegEXE;
}
public void convertor(String videoInputPath, String videoOutputPath) throws Exception {
// ffmpeg -i input.mp4 -y output.avi
List<String> command = new ArrayList<>();
command.add(ffmpegEXE);
command.add("-i");
command.add(videoInputPath);
command.add("-y");
command.add(videoOutputPath);
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("/Users/hou/Documents/ffmpeg-static/bin/ffmpeg");
try {
ffmpeg.convertor("/Users/hou/Documents/ffmpeg-static/bin/123.mp4", "/Users/hou/Documents/ffmpeg-static/bin/java123.mp4");
} catch (Exception e) {
e.printStackTrace();
}
}
}
mp4视频与mp3音频合并:
前面的-i :输入的视频文件,后面的-i:输入的音频文件,-t :输入视频的实际长度单位为秒,-y:合成的文件名及格式后缀
$ ffmpeg -i 123.mp4 -i Fitz.mp3 -t 10 -y mix.mp4