据我了解,更改FFmpeg
的音量的唯一方法是通过command line
进行音量调节。
这应该改变音频的音量:
ffmpeg -i input.wav -filter:a "volume=1.5" output.wav
现在我以前在命令行中使用过FFmpeg
,它看起来像这样,没有给我任何错误:
String[] cmd = { "-i" , pcmtowavTempFile.toString(), "-i", mp3towavTempFile.toString(), "-filter_complex", "amix=inputs=2:duration=first:dropout_transition=3", combinedwavTempFile.toString()};
ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler() {
@Override
public void onSuccess(String message) {
super.onSuccess(message);
encodeWavToAAC();
}
@Override
public void onFailure(String message) {
super.onFailure(message);
onError(message);
}
});
但是,如果我尝试使用相同的方法处理音频音量,它将被忽略:
String[] cmd = { "-i" , pcmtowavTempFile.toString(), "-filter:a", "volume=1.3", pcmtowavTempFile.toString()};
ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler() {
@Override
public void onSuccess(String message) {
super.onSuccess(message);
}
@Override
public void onFailure(String message) {
super.onFailure(message);
}
});
最后一种音量更改方法我都没有,success or error message
也没有。
由于音量介于" "
之间,因此我尝试添加此内容:
String[] cmd = { "-i" , pcmtowavTempFile.toString(), "-filter:a", "\"volume=1.3\"", pcmtowavTempFile.toString()};
但是添加此行后,应用程序开始崩溃。
答案 0 :(得分:1)
请尝试使用同一命令代替此库。它使用最新的FFmpeg。
https://github.com/bravobit/FFmpeg-Android
FFmpeg ffmpeg = FFmpeg.getInstance(context);
if (ffmpeg.isSupported()) {
// to execute "ffmpeg -version" command you just need to pass "-version"
String[] cmd= {"-i", pcmtowavTempFile.toString(), "-af", "volume=1.3", pcmtowavTempFile.toString()};
ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler() {
@Override
public void onStart() {}
@Override
public void onProgress(String message) {}
@Override
public void onFailure(String message) {}
@Override
public void onSuccess(String message) {}
@Override
public void onFinish() {}
});
} else {
// ffmpeg is not supported
}
答案 1 :(得分:0)
这里的错误是FFmpeg不执行就地编辑,这意味着我无法覆盖相同的File
。我尝试通过添加命令"-y"
进行覆盖,但由于该规则相同,因此也无法正常工作。
因此解决方案是创建一个新的File
作为输出File
。