无法 运行 程序“...\bin\ffmpeg.exe”:错误=13,权限被拒绝
Cannot run program "...\bin\ffmpeg.exe": error=13, Permission denied
尝试让这个 Jave 程序在我的 android 上运行,主机是 Windows 64 位机器。创建了一个 class 并扩展了 FFMPEGLocator class 定义了我的文件系统中 ffmpeg 可执行文件的路径。但似乎每次显示“错误 13,权限被拒绝”时都不起作用。有人可以解释一下这种情况吗?
Class extended
class SampleLocator extends FFMPEGLocator {
@Override
protected String getFFMPEGExecutablePath() {
return "...\bin\ffmpeg.exe";
} }
audio converting code
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();
尝试让这个 Jave 程序在我的 android 上运行,主机是 Windows 64 位机器。创建了一个 class 并扩展了 FFMPEGLocator class 定义了我的文件系统中 ffmpeg 可执行文件的路径。但似乎每次显示“错误 13,权限被拒绝”时都不起作用。有人可以解释一下这种情况吗?
Class extended
class SampleLocator extends FFMPEGLocator {
@Override
protected String getFFMPEGExecutablePath() {
return "...\bin\ffmpeg.exe";
} }
audio converting code
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();