簡體   English   中英

在Android上獲取音頻文件的持續時間

[英]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上正常播放。

我嘗試了幾種路徑變體:

  • 資產/資產/聲音/ _TESTSOUNDWAVE.wav
  • android.resource://com.package.name/assets/Assets/sounds/_TESTSOUNDWAVE.wav

我正在使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM