如何在Android Java中将mp4转换为mp3?

问题描述 投票:0回答:0

我有一个视频的 mp4 链接,但没有该 mp4 视频的 mp3 版本的链接。那么有什么方法可以在 Android 中将 mp4 视频转换为 mp3 吗?我看到了一些资源,但没有任何对我有用。我相信有两种方法可以实现这一目标

  1. 直接将 mp4 链接转换为 mp3。 (不确定这是否可以实现)
  2. 借助链接将 mp4 下载到设备上,然后使用一些代码将该 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是

https://androidprogrammatically425516919.wordpress.com/2020/04/21/how-to-convert-video-to-audio-in-android-programmatically/

但是我在这里也遇到错误无法实例化提取器。另一个错误是 java.io.FileNotFoundException: open failed: EISDIR (Is a directory) 我尝试了在线可用的解决方案来解决这些错误,但没有任何效果。比如授予写权限。提供保存输出的有效位置。

但到目前为止还没有任何效果。请帮我解决这个问题。谢谢你

java android video ffmpeg android-ffmpeg
© www.soinside.com 2019 - 2024. All rights reserved.