2013-10-31 9 views
5

मैं ऑडियो फ़ाइलों की अवधि प्राप्त करने की कोशिश कर रहा हूं। उसके लिए मैं निम्नलिखित कोड का उपयोग कर रहा:मीडिया .getduration रिटर्न -1

$.fntReproducir=function(){ 
    //obtenemos una instancia del elemento que contiene la info. de cancion a reproducir 
    var $objContenedorCancion=$('#olCanciones').children().eq(iCancionActual); 
    //obtenemos la ruta del archivo que se va a reproducir y se lo asignamos 
    //al source del audio player de HTML5 
    objReproductor = new Media($objContenedorCancion.attr('rel'), stopAudio, null); 
    //var timerDur = setInterval(GetCurrPosition, 1000); 
    //desmarcamos cualquier cancion en la lista (si es que estuviese marcada alguna) 
    $('#olCanciones li').removeClass('clsSeleccionado'); 
    //marcamos en la lista la cancion que vamos a reproducir 
    $objContenedorCancion.addClass('clsSeleccionado'); 
    meState = myMediaState.play 

    //reproducir la cancion con el metodo play 
    objReproductor.play(); 
    //PlayMusic(objReproductor); 


    $('#lblDuracion').find('span').text('enters'); 
// Play audio 
    if (objReproductor) { 
     //objReproductor.play(); 
     //document.getElementById('PlayStatusID').innerHTML = "<p></p>Status: playing..."; 
     $('#lblDuracion').find('span').text('enters2'); 
     //setButtonState(myMediaState.playback); 
     // Update media position every second 
     clearProgressTimmer(); 
     $('#lblDuracion').find('span').text('enters4'); 
     progressTimmer = setInterval(function() { 
      // get my_audio position 
      $('#lblDuracion').find('span').text('enters5'); 
      objReproductor.getCurrentPosition(
      // success callback 
      function (position) { 
       //document.getElementById('lblCancion').innerHTML = "<p></p>Status: enters "; 
       $('#lblDuracion').find('span').text('enters8'); 
       if (position >= 0){ 
        $('#lblDuracion').find('span').text('enters6'); 
        $('#lblEstado').find('span').text(position); 
       }else { 
        $('#lblEstado').find('span').text('0 sec'); 
       } 

      }, 
      // error callback 
      function (e) { 
       $('#lblEstado').find('span').text('0 sec' + e); 
      }); 

      $('#lblDuracion').find('span').text(objReproductor.getDuration()); 
      //$('#lblEstado').find('span').text(count); 
     }, 1000); 
    } 

    $('#btnPausar').val('Play'); 
    $('#btnPausar').find('img').attr('src','img/pause.png'); 
    //$('#lblDuracion').find('span').text(objReproductor.getDuration()); 
    //ocultamos suavemente los datos de la cancion anterior 
    $('#divInfoCancion').find('label').stop(true.true).animate({ 
     opacity: 0 
    },function(){ 
     //obtenemos una instancia del elemento que contiene los datos de la cancion 
     var $objContenedorCancion=$('#olCanciones').children().eq(iCancionActual);   
     //actualizamos la informacion de la cancion que se esta reproduciendo 
     //duracion total 

     //nombre de la cancion 
     //$('#lblCancion').find('span').text($objContenedorCancion.find('strong').text()); 
     $('#lblCancion').text($objContenedorCancion.find('.li_song').text()); 
     //artista 
     //$('#lblArtista').find('span').text($objContenedorCancion.find('em').text()); 
     $('#lblArtista').text($objContenedorCancion.find('.li_artist').text()); 
     //tiempo transcurrido 
     //$('#lblEstado').find('span').text('00:00'); 
     //imagen 
     $('#current_img').attr('src',$objContenedorCancion.find('img').attr('src')); 
     //mostramos suavemente la info. de la nueva cancion 
     $(this).stop(true,true).animate({ 
      opacity: 1 
     }); 
    }); 

मैं कुछ मंचों कि setInterval getDuration उपयोग करने के लिए अनिवार्य था में देखा था, यही वजह है कि मैं इसका इस्तेमाल, लेकिन यह मुझे किसी भी परिणाम दे रही है नहीं है। फ़ाइल अच्छी तरह से लोड की गई है क्योंकि मैं इसे सुन सकता हूं और यह GetCurrentPosition में प्रवेश करता है क्योंकि पाठ "अवधि = -1" प्रकट होता है, इसलिए यह स्पष्ट है कि -1 मान दे रहा है। मैं सही अवधि मूल्य कैसे प्राप्त कर सकता हूं?

संपादित

मैं और अधिक कोड डाल दिया और यह भी getCurrentPosition डायन काम नहीं कर रहा जोड़ें। मैंने अलग-अलग $ ('# lblDuracion') डाल दिया। ('Span') ढूंढें। टेक्स्ट ('enters'); विभिन्न संख्याओं के साथ यह देखने के लिए कि 'lblDuracion' में क्या मूल्य दिखाई देता है और यह 'enters5' है, लेकिन यह लाइन $ ('# lblEstado') से भी गुजरता है। ('span') ढूंढें। टेक्स्ट (objReproductor.getDuration()); वह -1 देता है।

उत्तर

0

यहां तक ​​कि अगर फ़ाइल-प्रणाली निश्चित रूप से कहते हैं:/android_assets

समारोह की उम्मीद/android_asset - या इसे वापस आ जाएगी -1 एक गैर-दस्तावेजी रूप में "फ़ाइल नहीं मिली"।

.getDuration() विधि को कॉल करने के लिए समय-कटा हुआ पाश की आवश्यकता होती है - अन्यथा यह -1 भी वापस आ जाएगी।

playFile: function() { 

    var audiofile = new Media(
     'file:///android_asset/www/audio/Rumble_Pack_-_Mad_Robots.wav', 
     function(i){} 
    ); 

    var counter = 0; 
    var timerDur = setInterval(function() { 
     counter = counter + 100; 
     if(counter > 2000) {clearInterval(timerDur);} 
     var duration = audiofile.getDuration(); 
     if(duration > 0) { 
      clearInterval(timerDur); 
      console.debug(duration + ' seconds'); 
     } 
    }, 100); 

    audiofile.play(); 
} 
+0

धन्यवाद। मैंने पहले ही मीडिया() कन्स्ट्रक्टर के लिए फोनगैप पर दस्तावेज़ों की जांच की है। मैंने उस उदाहरण का पालन करने की कोशिश की जो वहां दिखाई देता है लेकिन यह मेरे लिए काम नहीं करता है। मुझे पता है कि मान -1 का मतलब है कि अवधि अज्ञात है लेकिन अवधि अज्ञात क्यों है? ऐसा इसलिए होना चाहिए क्योंकि यह एक त्रुटि है क्योंकि यह ठीक अवधि के साथ एक सामान्य एमपी 3 फ़ाइल का उपयोग कर रहा है। –

+0

यह निश्चित रूप से "त्रुटि" नहीं है जबकि ऑनर कैरबैक ट्रिगर नहीं किया गया है - अनुमान लगाएं कि यह केवल स्थानीय फ़ाइलों के साथ काम करता है - जबकि पथ के साथ थोड़ा अजीब है उदाहरण के साथ/android_assets/... सबसे अच्छा pratice ऑनर कॉलबैक पर एक फ़ंक्शन को भी हुक करता है और इसे कंसोल करने के लिए आउटपुट लॉग करता है (लेकिन मुझे लगता है कि यह भी ट्रिगर नहीं किया जाएगा)। यह सी नहीं है और वापसी मान -1 को एक त्रुटि नहीं होने के लिए दस्तावेज किया गया है। –

+0

मैं/android_assets/का उपयोग कर रहा हूं ... पथ और गीत चल रहा है इसलिए नया मीडिया (...) अच्छी तरह से काम कर रहा है। लेकिन मुझे नहीं पता कि getDuration() विधि हमेशा क्यों लौटाती है -1। –

0

कॉर्डोबा प्लगइन निकालें कॉर्डोबा-प्लगइन-मीडिया

और फिर

कॉर्डोबा प्लगइन उत्तर के लिए जोड़ने [email protected]

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