【发布时间】:2021-10-29 13:54:45
【问题描述】:
我想以编程方式在 android 中剪切或修剪音频歌曲文件。例如:我的手机已经有可用的音乐文件时间播放 4 分钟,我想从第 2 分钟到第 3 分钟剪切或修剪歌曲,如何?请逐步详细指导。谢谢!
chplay 上的应用具有相同的功能 https://play.google.com/store/apps/details?id=com.mp3cutter.mixaudio.musiceditor https://play.google.com/store/apps/details?id=com.tianxingjian.supersound
我已尝试此代码,但返回 RETURN_CODE_FAILED
trimMusic(position_start,position_end,"NAME_SONG");
private void trimMusic(long startMs, long endMs, String fileName) {
File folder = new File(Environment.getExternalStorageDirectory() + "/MusicEditor/");
folder.setReadable(true);
if (!folder.exists()) {
folder.mkdir();
}
filePrefix = fileName;
String fileExt = ".mp3";
System.out.println("audio"+fileExt);
dest = new File(folder, filePrefix + fileExt);
original_path = path;
duration = (endMs - startMs) / 1000;
filePath = dest.getAbsolutePath();
Log.d("chandoixuanduc",filePath);
command = new String[]{"-ss", "" + startMs / 1000, "-y", "-i", original_path, "-t", "" + (endMs - startMs) / 1000, "-vcodec", "mpeg4", "-b:v", "2097152", "-b:a", "48000", "-ac", "2", "-ar", "22050", filePath};
execffmpegBinary(command);
}
private void execffmpegBinary(final String[] command) {
Config.enableLogCallback(new LogCallback() {
@Override
public void apply(LogMessage message) {
Log.e(Config.TAG, message.getText());
}
});
Config.enableLogCallback(new LogCallback() {
@Override
public void apply(LogMessage message) {
Log.e(Config.TAG, message.getText());
}
});
Config.enableStatisticsCallback(new StatisticsCallback() {
@Override
public void apply(Statistics newStatistics) {
}
});
Log.d(TAG, "Started command : ffmpeg " + Arrays.toString(command));
long executionId = FFmpeg.executeAsync(command, new ExecuteCallback() {
@Override
public void apply(long executionId, int returnCode) {
if (returnCode == RETURN_CODE_SUCCESS) {
// progressDialog.dismiss();
dialog.dismiss();
Toast.makeText(getActivity(), R.string.status_cut_music_sus, Toast.LENGTH_LONG).show();
Log.d("chandoixuanduc","RETURN_CODE_SUCCESS");
}
else if (returnCode == RETURN_CODE_CANCEL) {
Log.d("chandoixuanduc","RETURN_CODE_CANCEL");
}
else {
Toast.makeText(getActivity(), R.string.status_cut_music_failed, Toast.LENGTH_LONG).show();
Log.d("chandoixuanduc","RETURN_CODE_FAILED");
}
}
});
}
【问题讨论】:
标签: android