2016-07-08 3 views
1

Я пишу приложение, которое возьмет аудиофайл, а затем загрузит его в службу Teleriks everlive. Я хочу, чтобы пользователи не загружали аудиофайлы длиной более 20 секунд.Cordova Media Capture - найдите продолжительность аудиофайла

Но после тестирования кажется, что независимо от продолжительности звукового файла, «data.duration» всегда возвращает 0, поэтому независимо от того, какой файл загружен.

Это плагин я использую: https://github.com/apache/cordova-plugin-media-capture

Это мой код:

var el = new Everlive('app-id-here'); //Taken away ID for stackoverflow 

    var options = { 
     fileName: 'testaudio.mp3', 
     mimeType: 'audio/mpeg3' 
    }; 

    function formatSuccess(data) { 
     if (data.duration > 20) { 
      alert("The audio file you have used is longer than 20 seconds."); 
     } else { 
      alert(data.duration); 
      el.files.upload(capturedFiles[0].fullPath, options) 
       .then(function() { 
        alert('success'); 
       }, function (err) { 
        alert(JSON.stringify(err)); 
       }); 
     } 

    } 

    function formatFail() { 
     alert("Error accessing file data"); 

    } 

    capturedFiles[0].getFormatData(formatSuccess, formatFail); 

ответ

0

В последний раз я играл с этим, getDuration работал только когда медиа-файл воспроизводится. С моей Apache Cordova API Cookbook (www.cordovacookbook.com):

Приложение может определить длину медиа-файла с использованием getDuration, как показано в следующем примере:

console.log('Duration: ' + theMedia.getDuration() + ' seconds'); 

getDuration сообщит -1 если аудиоклип в данный момент не воспроизводится. В отличие от getCurrentPosition, метод getDuration вернет длину клипа, даже если воспроизведение приостановлено.

+0

Вы нашли решение для этого? я получаю -1 для получения продолжительности тоже. – Mikethetechy

Смежные вопросы