cordova:media.getDuration返回-1

时间:2016-02-20 15:31:38

标签: cordova ionic-framework phonegap-plugins phonegap-cli

我正在使用Media.getDuration()函数来获取音频文件的持续时间,但我总是得到-1作为响应。

如果我使用build.phonegap.com

构建,这可以正常工作

但每当我使用cli构建时,getDuration都无效。

以下是重现此问题的简单步骤:

CLI:

cordova start my_project
cordova plugin add cordova-plugin-media
cordova platform add android
cordova build android

WWW / index.html中

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
              "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <title>Media Example</title>

    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript" charset="utf-8">

    // Wait for device API libraries to load
    //
    document.addEventListener("deviceready", onDeviceReady, false);


    function deviceready()
    {
       var my_media = new Media('http://web.com/mp3');
       my_media.play();
       console.log(my_media.getDuration()); // this will produce -1
    }


    </script>
  </head>
  <body>

  </body>
</html>

3 个答案:

答案 0 :(得分:0)

好吧我得到了解决方案。 我默认使用旧版媒体插件(我认为2.0) 我使用以下命令删除旧插件:

cordova plugin remove cordova-plugin-media

然后我使用以下命令安装了同一插件的最新版本:

cordova plugin add cordova-plugin-media@2.2.0

然后我再次推它,它就像魅力一样。

由于

答案 1 :(得分:0)

var ruta="/android_asset/www/sounds/M.mp3"; 
$scope.audiofile = new Media(ruta);
$scope.audiofile.play();

var timerDur = setInterval(function () {
    $scope.dur = $scope.audiofile.getDuration();
    if ($scope.dur > 0) {
        clearInterval(timerDur);
        console.log($scope.dur + " sec");
    }    
}, 1);

cordova插件删除 cordova-plugin-media

然后我使用以下命令安装了同一插件的最新版本:

cordova plugin add cordova-plugin-media@2.3.0

答案 2 :(得分:0)

当触发getDuration()时,我总是得到-1。这是我从ionic forum

找到的解决方案参考
Register((int id) => { Console.WriteLine($"logged in user with id {id}!"; return true; }, () => { Console.WriteLine("Sign out callback called."); return true; });

标签:离子4,cordova-plugin-media,getDuration(),media.getDuration