cordova:media.getDuration返回-1 [英] cordova: media.getDuration returns -1

查看:692
本文介绍了cordova:media.getDuration返回-1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



使用build.phonegap.com



但是每当我使用cli构建时,那么getDuration不起作用。



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



CLI:

  cordova s​​tart 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>媒体示例< / title>

< script type =text / javascriptcharset =utf-8src =cordova.js>< / script&
< script type =text / javascriptcharset =utf-8>

//等待设备API库加载
//
document.addEventListener(deviceready,onDeviceReady,false);


function deviceready()
{
var my_media = new Media('http://web.com/mp3');
my_media.play();
console.log(my_media.getDuration()); //这将产生-1
}


< / script>
< / head>
< body>

< / body>
< / html>


解决方案

  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
$ b

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

  cordova插件add cordova -plugin-media@2.3.0 


I am using Media.getDuration() function to get duration of an audio file but I am always getting -1 as response.

This works fine if I build using build.phonegap.com

But whenever I build using cli I then getDuration does not work.

Following are simple steps to reproduce this issue:

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>

解决方案

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 plugin remove cordova-plugin-media

Then I installed latest version of same plugin by using following command:

cordova plugin add cordova-plugin-media@2.3.0

这篇关于cordova:media.getDuration返回-1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆