无法运行程序“...\bin\ffmpeg.exe”:错误=13,权限被拒绝

问题描述

尝试让这个 Jave 程序在我的 android 上运行,其中主机是一台 Windows 64 位机器。创建了一个类和扩展的 FFMPEGLocator 类,定义了我的文件系统中 ffmpeg 可执行文件的路径。但是每次显示错误 13,权限被拒绝”时似乎都不起作用。有人可以对这种情况有所了解吗?

类扩展

   class SampleLocator extends FFMPEGLocator {
@Override
protected String getFFMPEGExecutablePath() {
    return "...\\bin\\ffmpeg.exe";
} }

音频转换代码

File path =  Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
    File source = new File(url);
    targetFile = new File(path,"sample.wav");
    AudioAttributes audio = new AudioAttributes();
    audio.setCodec("pcm_s16le");
    audio.setBitRate(64000);
    audio.setChannels(2);
    audio.setSamplingRate(44100);
    EncodingAttributes attrs = new EncodingAttributes();
    attrs.setFormat("wav");
    attrs.setAudioAttributes(audio);
    Encoder encoder = new Encoder(new MyDefaultFFMPEGLocator());
    try {
        encoder.encode(source,targetFile,attrs);
       
    }
    catch (IllegalArgumentException | InputFormatException e){
        e.printstacktrace();
   
    } catch (EncoderException e) {
     
        e.printstacktrace();
    }

解决方法

这就是我解决此权限被拒绝错误的方法。您首先必须实例化 ffmpeg 可执行文件实例,然后提供指向 ffmpeg 可执行文件路径的执行权限代码。 使用了这个开源项目的帮助 ffmpeg-android

Runtime.getRuntime().exec("chmod -R 777 " + ffmpeg.getAbsolutePath()).waitFor();

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...