1、首先我是mac系统,ffmpeg是通过brew install ffmpeg安装的4.2.2版本的
ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
2、我使用Java编写的合并Video视频和音频背景音乐的功能
package xxxxxx;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class MergeVideoMp {
private String ffmpegMAC;
public MergeVideoMp3(String ffmpegMAC) {
super();
this.ffmpegMAC = ffmpegMAC;
}
public void convertor(String videoInputPath, String mp3InputPath,
double seconds, String videoOutputPath) throws Exception {
List<String> command = new ArrayList<>();
command.add(ffmpegMAC);
// disable audio
👉✅command.add("-an");
command.add("-i");
command.add(videoInputPath);
command.add("-i");
command.add(mp3InputPath);
command.add("-t");
command.add(String.valueOf(seconds));
command.add("-y");
command.add(videoOutputPath);
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) throws Exception {
MergeVideoMp3 ffmpeg = new MergeVideoMp3("/usr/local/Cellar/ffmpeg/4.2.2_3/bin/ffmpeg");
try {
ffmpeg.convertor("xxx/test.mp4","xxxx/BrandenburgConcerto.mp3", 10, "xxxx/output.avi");
} catch (Exception e) {
e.printStackTrace();
}
}
}
说明一下:
a、
/usr/local/Cellar/ffmpeg/4.2.2_3/bin/ffmpeg
是我ffmpeg安装位置bin下面ffmpeg的路径
b、
xxx/test.mp4是视频文件位置
xxxx/BrandenburgConcerto.mp3是音频文件路径
10是最后视频的时长
xxxx/output.avi是合并音频之后的视频位置
c、
重点是我没有加下面这行代码的时候,最后生成的视频还是没有音频的
也就是所谓的不成功,不知道是不是跟最新版本的ffmpeg版本有关系还是怎么地?
之前看其他人博客都没加 -an
command.add("-an");
// 因为 -an的意识是指 disable audio
加上上面这条语句就好了,我最后生成的视频有音乐了!!!!👍