[英]Get duration of audio file on Android
我无法获得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。 没有固有的(有效的,有效的)方法来获取音频文件的持续时间(使用AudioEngine进行尝试)。 上面的代码来自Cocos2D-x的C ++端通过JNI调用的活动的静态方法。
原来Cocos2D-x不知何故给了我指向资产文件的不正确确切路径! 我使用单例File-something-class来获取C ++端的确切路径,并将这些路径发送到平台端(iOS或Android)。 始终在iOS上运行。 由于某些原因,它不适用于Android。
Android方面的工作路径是: Assets / sounds / _TESTSOUNDWAVE.wav
我必须从字符串的开头专门删除“ assets /”( fullpath = fullpath.replaceAll("^assets/", "");
)。 我的设置可能有些有趣,或者Cocos2d-x存在问题。 谁知道。
我如何确定确切的路径是递归列出捆绑中的所有内容: 如何从Android应用程序中获取资源的目录列表?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.