修复合并音频第二段自动跳过问题

修复合并音频第二段自动跳过问题
pull/107/head
xufulong 5 years ago
parent 63f78f2c58
commit d3040bcf6d
  1. 7
      app/src/main/java/com/frank/ffmpeg/activity/AudioHandleActivity.java
  2. 21
      app/src/main/java/com/frank/ffmpeg/util/FFmpegUtil.java

@ -10,6 +10,8 @@ import android.widget.LinearLayout;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import java.io.File; import java.io.File;
import java.util.ArrayList;
import java.util.List;
import com.frank.ffmpeg.AudioPlayer; import com.frank.ffmpeg.AudioPlayer;
import com.frank.ffmpeg.R; import com.frank.ffmpeg.R;
@ -140,8 +142,11 @@ public class AudioHandleActivity extends BaseActivity {
if (!FileUtil.checkFileExist(appendFile)) { if (!FileUtil.checkFileExist(appendFile)) {
return; return;
} }
List<String> fileList = new ArrayList<>();
fileList.add(srcFile);
fileList.add(appendFile);
String concatFile = PATH + File.separator + "concat.mp3"; String concatFile = PATH + File.separator + "concat.mp3";
commandLine = FFmpegUtil.concatAudio(srcFile, appendFile, concatFile); commandLine = FFmpegUtil.concatAudio(fileList, concatFile);
break; break;
case R.id.btn_mix://混音 case R.id.btn_mix://混音
if (!FileUtil.checkFileExist(appendFile)) { if (!FileUtil.checkFileExist(appendFile)) {

@ -5,6 +5,7 @@ import android.util.Log;
import com.frank.ffmpeg.format.VideoLayout; import com.frank.ffmpeg.format.VideoLayout;
import java.util.List;
import java.util.Locale; import java.util.Locale;
/** /**
@ -46,14 +47,23 @@ public class FFmpegUtil {
/** /**
* 使用ffmpeg命令行进行音频合并 * 使用ffmpeg命令行进行音频合并
* *
* @param srcFile 源文件 * @param fileList 合并列表
* @param appendFile 待追加的文件
* @param targetFile 目标文件 * @param targetFile 目标文件
* @return 合并后的文件 * @return 合并后的文件
*/ */
public static String[] concatAudio(String srcFile, String appendFile, String targetFile) { public static String[] concatAudio(List<String> fileList, String targetFile) {
String concatAudioCmd = "ffmpeg -i concat:%s|%s -acodec copy %s"; // ffmpeg -i concat:%s|%s -acodec copy %s
concatAudioCmd = String.format(concatAudioCmd, srcFile, appendFile, targetFile); if (fileList == null || fileList.size() == 0) {
return null;
}
StringBuilder concatBuilder = new StringBuilder();
concatBuilder.append("concat:");
for (String file : fileList) {
concatBuilder.append(file).append("|");
}
String concatStr = concatBuilder.substring(0, concatBuilder.length() - 1);
String concatAudioCmd = "ffmpeg -i %s -acodec libmp3lame -ab 128k -ac 2 -ar 44100 %s";
concatAudioCmd = String.format(concatAudioCmd, concatStr, targetFile);
return concatAudioCmd.split(" ");//以空格分割为字符串数组 return concatAudioCmd.split(" ");//以空格分割为字符串数组
} }
@ -66,6 +76,7 @@ public class FFmpegUtil {
* @return 混合后的文件 * @return 混合后的文件
*/ */
public static String[] mixAudio(String srcFile, String mixFile, String targetFile) { public static String[] mixAudio(String srcFile, String mixFile, String targetFile) {
//调节音量:使用-vol 50, 其中vol为0-100
String mixAudioCmd = "ffmpeg -i %s -i %s -filter_complex amix=inputs=2:duration=first -strict -2 %s"; String mixAudioCmd = "ffmpeg -i %s -i %s -filter_complex amix=inputs=2:duration=first -strict -2 %s";
mixAudioCmd = String.format(mixAudioCmd, srcFile, mixFile, targetFile); mixAudioCmd = String.format(mixAudioCmd, srcFile, mixFile, targetFile);
return mixAudioCmd.split(" ");//以空格分割为字符串数组 return mixAudioCmd.split(" ");//以空格分割为字符串数组

Loading…
Cancel
Save