2012-11-13 24 views
8

काम करती हैं मैं फोनगैप के साथ एक ऑडियो मीडिया रिकॉर्डर/प्लेयर बना रहा हूं। यह सब खूबसूरती से काम कर रहा है, लेकिन मैंने एक झुर्रियां मारा है जो मैं लोहा नहीं लग सकता।फोनगाप मीडिया एपीआई से अवधि() प्राप्त करने में असमर्थ है, लेकिन अन्य विधियां

my_media.play(); वास्तव में मेरे ग्रहण या एक्सकोड कंसोल में मीडिया w/o त्रुटि चलाता है, यही कारण है कि एक -1 दिखा रहा है कि चेतावनी परेशान है। मैं उस फ़ाइल की अवधि को वापस करने के लिए my_media.getDuration(); की अपेक्षा करता हूं जिसे मैं चलाने का प्रयास कर रहा हूं।

मेरा प्रयास/पकड़ ब्लॉक एक त्रुटि फेंक नहीं रहा है, मैं इस पर काफी परेशान हूं। Here's the PhoneGap documentation on Media.getDuration()

function playAudio() { 

    $('#btnStopRecording').removeClass('ui-disabled'); 
    $('#btnPlayMessage, #btnStartStopRecording, #btnDeleteMessage, #btnAcceptUpload').addClass('ui-disabled'); 

    my_media = new Media(fullRecordPath, 

     // success callback 
     function() { 
      $('#btnPlayMessage, #btnStartStopRecording, #btnDeleteMessage, #btnAcceptUpload').removeClass('ui-disabled'); 
      $('#btnStopRecording').addClass('ui-disabled'); 
     }, 

     // error callback 
     function (err) { 
      console.log("attempting to play fullRecordPath = "+fullRecordPath); 
      console.log("playAudio():Audio Error: " + err.code); 
     } 
    ); 

    var thisDuration; 

    try{ 
     thisDuration = my_media.getDuration(); 
    } catch (err) { 
     console.log("attempting to get duration error code "+err.code); 
     console.log("attempting to get duration error message "+err.message); 
    } 

    alert("we're about play a file of this duration "+thisDuration); 

    my_media.play(); 

    // stop playback when the stop button is tapped 
    $('#btnStopRecording').off('tap').on('tap',function() 
    { 
     my_media.stop(); 
     $('#btnPlayMessage, #btnStartStopRecording, #btnDeleteMessage, #btnAcceptUpload').removeClass('ui-disabled'); 
     $('#btnStopRecording').addClass('ui-disabled'); 
    }); 

    // if the user leaves the page, stop playback 
    $('#pageRecordMessage').live('pagehide', function() 
    { 
     my_media.stop(); 
     $('#btnPlayMessage, #btnStartStopRecording, #btnDeleteMessage, #btnAcceptUpload').removeClass('ui-disabled'); 
     $('#btnStopRecording').addClass('ui-disabled'); 
    }); 
} 

उत्तर

2

प्रश्न में मीडिया के लिए मेटाडेटा लोड नहीं किया गया है जब आप my_media.getDuration() को कॉल करते हैं। दस्तावेज में आप अपने प्रश्न में संदर्भित उदाहरण कोड अंतराल में getDuration कॉल कहते हैं:

var timerDur = setInterval(function() { 
    counter = counter + 100; 
    if (counter > 2000) { 
     clearInterval(timerDur); 
    } 
    var dur = my_media.getDuration(); 
    if (dur > 0) { 
     clearInterval(timerDur); 
     document.getElementById('audio_duration').innerHTML = (dur) + " sec"; 
    } 
}, 100); 

मैं ऐसी ही कुछ कर रही है की सिफारिश करेंगे।

+1

मेरे पास यह आपके जैसे सेट इंटरवल में है लेकिन अभी भी काम नहीं करता है। यह हमेशा -1 देता है। क्या कारण हो सकता है? क्योंकि यह अच्छी तरह से निष्पादित कर रहा है। फ़ाइल प्रकार समस्या हो सकती है? मैं एमपी 3 का उपयोग कर रहा हूँ –

1

यह समाधान मेरे लिए काम करता है। असल में, खेलते हैं और तुरंत बंद करो। यह किसी भी समय नहीं लग रहा है, एक सभ्य कामकाज की तरह लगता है।

media.play(); 
media.stop(); 
var length = media.getDuration(); 
0

यह प्रश्न बहुत पुराना है। लेकिन यह अभी भी प्रासंगिक है क्योंकि कई लोगों को भी यही समस्या का सामना करना पड़ रहा है। जब भी कुछ भी काम नहीं करता है, तो मैं केवल एक चीज करता हूं, संस्करण को अपग्रेड या डाउनग्रेड करता हूं। इस मामले में मैंने निम्नलिखित संस्करण स्थापित करके मेरी समस्या हल की।

cordova plugin add [email protected] 
0

मुझे आईओएस के लिए कॉर्डोवा में भी इसी तरह की समस्या का सामना करना पड़ा। मैं ऑडियो रिकॉर्ड करने, चलाने और रोकने में सफलतापूर्वक सक्षम था लेकिन ऑडियो स्थिति के लिए वर्तमान स्थिति और कुल अवधि प्राप्त करने में असमर्थ था। तो my_media.stopRecord() के बाद मैंने रिकॉर्डिंग ऑडियो i.e. को पूरा करने के ठीक बाद my_media.release() जोड़ा और यह एक आकर्षण की तरह काम करता था। इससे पहले मुझे getCurrentPosition() के लिए getDuration() और 0 के लिए -1 मिल रहा था।

उम्मीद है कि यह किसी की मदद करेगा।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^