我有一个视频的 mp4 链接,但没有该 mp4 视频的 mp3 版本的链接。那么有什么方法可以在 Android 中将 mp4 视频转换为 mp3 吗?我看到了一些资源,但没有任何对我有用。我相信有两种方法可以实现这一目标
我还尝试了一些在线可用的解决方案
https://github.com/tanersener/mobile-ffmpeg
我尝试了上面的库来实现最终的目标。但异步命令执行失败,returnCode=1。我使用的代码中的这个错误是
private class Mp4ToMp3ConverterTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
String mp4FilePath = params[0];
String mp3OutputPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/output.mp3";
String[] ffmpegCommand = {"-i", mp4FilePath, "-vn", "-ar", "44100", "-ac", "2", "-b:a", "192k", mp3OutputPath};
Config.enableStatisticsCallback(new StatisticsCallback() {
public void apply(Statistics newStatistics) {
Log.d("Dekh", String.format("frame: %d, time: %d", newStatistics.getVideoFrameNumber(), newStatistics.getTime()));
}
});
long executionIdd = FFmpeg.executeAsync(ffmpegCommand, new ExecuteCallback() {
@Override
public void apply(final long executionId, final int returnCode) {
if (returnCode == RETURN_CODE_SUCCESS) {
Log.i("Dekh", "Async command execution completed successfully.");
} else if (returnCode == RETURN_CODE_CANCEL) {
Log.i("Dekh", "Async command execution cancelled by user.");
} else {
Log.i("Dekh", String.format("Async command execution failed with returnCode=%d.", returnCode));
}
}
});
FFmpeg.cancel(executionIdd);
return mp3OutputPath;
}
}
我使用的解决方案2是
但是我在这里也遇到错误无法实例化提取器。另一个错误是 java.io.FileNotFoundException: open failed: EISDIR (Is a directory) 我尝试了在线可用的解决方案来解决这些错误,但没有任何效果。比如授予写权限。提供保存输出的有效位置。
但到目前为止还没有任何效果。请帮我解决这个问题。谢谢你