当前位置: 首页 > 知识库问答 >
问题:

FFmpeg在从视频中提取MP3时出错

乌杰
2023-03-14

我想执行FFmpeg命令,从应用程序的资产文件夹中的视频中提取MP3格式的音频。有关更多信息,请参阅http://writingminds.github.io/ffmpeg-android-java/

String sourceFilePath = "file:///android_asset/SampleVideo.mp4";
destFilePath = mp3File.getAbsolutePath();

FFmpeg ffmpeg = FFmpeg.getInstance(MainActivity.this);
    try {

        String cmd[] = new String[]{"/data/data/com.example.bansi_vasundhara.videotomp3_demo/files/ffmpeg", "-i", sourceFilePath, "-vn", "-acodec copy", destFilePath};

        ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler() {

            @Override
            public void onStart() {
                Log.e("gc", "Command Started");
            }

            @Override
            public void onProgress(String message) {
                Log.e("gc", "onProgress" + message);
            }

            @Override
            public void onFailure(String message) {
                Log.e("gc", "onFailure command" + message);
            }

            @Override
            public void onSuccess(String message) {
                Log.e("gc", "onSuccess command" + message);
            }

            @Override
            public void onFinish() {
                Log.e("gc", "onFinish command");
            }
        });

    } catch (FFmpegCommandAlreadyRunningException e) {
        // Handle if FFmpeg is already running
        e.printStackTrace();
    }

但是我犯了一个错误。请提出解决方案

JAVA木卫一。IOException:运行exec()时出错。命令:[/data/data/com.example.bansi_vasundhara.videotomp3_demo/files/ffmpeg,/data/data/com.example.bansi_vasundhara.videotomp3_demo/files/ffmpeg,-i,file:///android_asset/SampleVideo.mp4,-vn,-acodec copy,/storage/sdcard0/VideoToMP3/SampleMP3.mp3]工作目录:null环境:在java中为null。lang.ProcessManager。java上的exec(ProcessManager.java:211)。lang.Runtime。java上的exec(Runtime.java:173)。lang.Runtime。com上的exec(Runtime.java:128)。github。hiteshsondhi88。libffmpeg。ShellCommand。在com上运行(ShellCommand.java:10)。github。hiteshsondhi88。libffmpeg。ffmpegexecuteeasynctask。doInBackground(ffmpegexecuteeasynctask.java:38)位于com.github.hiteshsondhi88。libffmpeg。ffmpegexecuteeasynctask。android上的doInBackground(ffmpegexecuteeasynctask.java:10)。操作系统。异步任务$2。在java上调用(AsyncTask.java:288)。util。同时发生的未来任务。在android上运行(FutureTask.java:237)。操作系统。AsyncTask$SerialExecutor$1。在java上运行(AsyncTask.java:231)。util。同时发生的线程池执行器。java上的runWorker(ThreadPoolExecutor.java:1112)。util。同时发生的线程池执行器$Worker。在java上运行(ThreadPoolExecutor.java:587)。朗。丝线。运行(Thread.java:818)的原因是:java。木卫一。IOException:java上没有这样的文件或目录。lang.ProcessManager。java上的exec(本机方法)。lang.ProcessManager。exec(ProcessManager.java:209)

共有1个答案

姜增
2023-03-14

下面的命令适用于我从视频中提取音频-

String[] complexCommand = {"-y", "-i", inputFileAbsolutePath, "-vn", "-ar", "44100", "-ac", "2", "-b:a", "256k", "-f", "mp3", outputFileAbsolutePath};

使用ffmpeg编辑视频的完整代码发布在我的存储库中,其中包括从视频中提取音频

 类似资料:
  • 我想在背景图像上覆盖透明视频。我有一个视频,其中上半部分是RGB对象,下半部分是阿尔法掩码。 现在,为了制作这个,我执行以下步骤:

  • 我想提取原始Yuv帧从mp4剪辑使用FFMPEG。我输入。mp4告诉我视频格式是YUV420P10LE。我使用以下命令来提取帧: 以下是FFMPEG的日志:

  • 我有一堆从Youtube下载的视频,我想从他们中提取帧。我使用的当前命令是: 但是我还想设置-r和-t选项。我想要的fps是每个视频的fps,持续时间是他们的持续时间。我知道如果我不设置-r选项,默认值是25 fps。

  • 我使用这个库在我的Android应用程序中使用FFmpeg。我正在从视频中提取帧,然后将它们添加到裁剪查看器中。因此,每一帧都需要表示视频中的某个时间帧。下面是我当前提取帧的ffmpeg代码: 感谢任何帮助

  • 我已经在PC上使用pip ffprobe命令安装了ffprobe,并从这里安装了ffmpeg。 然而,我仍然在运行这里列出的代码时遇到麻烦。 我尝试使用下面的代码,但没有成功。 有人知道怎么了吗?我没有正确引用目录吗?是否需要确保和视频文件位于特定位置? 如果这个问题有点基本的话,我很抱歉。所有我需要的是能够迭代一组视频文件,并获得他们的开始时间和结束时间。 谢谢!