问题描述
尝试让这个 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();