我无法在Android上获取套装内音频文件的持续时间。
我试过了:
String stringDuration;
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
try {
mmr.setDataSource(fullpath);
stringDuration = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
}
catch (IllegalArgumentException e) {
debugalert("androidbridgeGetdurationofsound IllegalArgumentException error getting duration: " + e.getMessage());
return 0;
}
catch (Exception e) {
debugalert("androidbridgeGetdurationofsound Exception error getting duration: " + e.getMessage());
return 0;
}
finally {
mmr.release();
}
它总是因IllegalArgumentException异常而失败。我不确定路径是否不正确(尝试了一些变体),MediaMetadataRetriever类不支持媒体(尝试m4a和wav)或者什么。音频本身在Android上运行良好。
我尝试过的一些路径变体是:
我正在使用Cocos2D-x v3.6。没有固有的(工作的,afaik)方式来获取音频文件的持续时间(尝试使用AudioEngine)。 上面的代码来自于Cocos2D-x的C ++端通过JNI调用的活动的静态方法。
答案 0 :(得分:0)
原来Cocos2D-x以某种方式给了我不正确的资产文件路径!我使用单例File-something-class来获取C ++端的确切路径,并将这些路径发送到平台端(iOS或Android)。一直在iOS上工作。出于某种原因,它无法与Android合作。
Android端的工作路径为:资产/声音/ _TTSTSOUNDWAVE.wav
我必须专门删除" assets /"从字符串的开头(fullpath = fullpath.replaceAll("^assets/", "");
)。我的设置可能会很有趣,或者Cocos2d-x中存在问题。谁知道呢。
我如何确定准确的路径是递归列出捆绑中的所有内容:How can I get a directory listing of resources from my Android app?