[英]Using sauronsoftware's Jave in phonegap Android project
我正在开发phonegap应用,现在我正在尝试编写一个插件以将.amr文件转换为.mp3文件。 我正在使用JAVE进行此转换,并且在桌面上运行时,它在Android上失败,但有以下例外:
java.io.IOException: Error running exec().
Command: [/data/data/<my_package>/cache/jave-1/ffmpeg, -i, /sdcard/<my_filename>.amr, -vn, -acodec, libmp3lame, -f, mp3, -y, /sdcard/<my_filename>.mp3]
Working Directory: null Enviroment: null
我正在尝试这样转换:
private void convert(String input_file, CallbackContext callbackContext){
File input = new File(input_file);
File output = new File(input_file.replace(".amr", ".mp3"));
Encoder encoder = new Encoder();
EncodingAttributes encodingAttributes = new EncodingAttributes();
AudioAttributes audioAttributes = new AudioAttributes();
audioAttributes.setCodec("libmp3lame");
encodingAttributes.setAudioAttributes(audioAttributes);
encodingAttributes.setFormat("mp3");
try{
encoder.encode(input, output, encodingAttributes);
input.delete();
callbackContext.success("finished");
}
catch(Exception e){
callbackContext.error(e.getMessage());
}
}
我找到了这个答案,并且我理解为什么会发生错误,但是答案没有提供任何解决方案。 有没有办法让它在Phonegap项目中工作? 当应用程序调用插件时,我需要将ffmpeg库与插件打包在一起并将其复制到正确的文件夹中吗?
/data/data/<my_package>/cache/jave-1
陷入同样的问题。 现在,我发现文件ffmpeg权限存在问题。 JAVE试图设置它们,但是由于某种原因它不起作用。 所以我自己这样设置权限:
Process process = null;
DataOutputStream dataOutputStream = null;
try {
process = Runtime.getRuntime().exec("su");
dataOutputStream = new DataOutputStream(process.getOutputStream());
dataOutputStream.writeBytes("chmod 0755 __AppCachePath__/jave-1/ffmpeg\n");
dataOutputStream.writeBytes("exit\n");
dataOutputStream.flush();
process.waitFor();
} catch (Exception e) {
} finally {
try {
if (dataOutputStream != null) {
dataOutputStream.close();
}
process.destroy();
} catch (Exception e) {
}
}
此文件权限问题解决后。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.