2016-01-05 14 views
1

У меня вопрос. Я пытаюсь получить продолжительность источника.Получить видео Длительность jQuery

Я хочу сделать следующее: при загрузке страницы мне нужно получить длительность источника, но проблема в том, что когда я хочу получить продолжительность, видимо, не видно, только я могу получить продолжительность, когда я нажимаю кнопка. Мне нужно знать продолжительность с самого начала, потому что мне нужно вычислить позицию на видео/аудио и отправить через currentTime.

Я стараюсь делать «предупреждение», но результат «NaN».

Это мой код на самом деле:

$(document).ready(function() { 
    var asset = $('#asset')[0]; // Obtiene el Objeto 
    var tipo = $('#asset').attr('class'); // Video, Audio, PDF 
    var duracion = asset.duration; 
    var porcentaje = $('#porcentaje').attr('data-percent'); 
    var tiempo = (porcentaje*duracion)/100; 
    asset.currentTime = tiempo; 
    alert(duracion); // NaN 

    $("#guardar").click(function() { 
     var avance = asset.currentTime; 
     if(tipo == 'video' || tipo == 'audio'){ 
      porcentaje = parseInt((avance*100)/duracion); 
     } 
     else if(tipo == 'pdf'){ 
      porcentaje = 100; 
     } 
     alert(porcentaje); 
    }); 
}); 

Это все. Спасибо.

Густаво Г.

+0

'avance' и' duracion' являются строки - вы не можете выполнять математические функции со строками - вы получите значение «NaN». – PDKnight

ответ

1

Вам придется подождать, по крайней мере, пока не будет загружен метаданные, чтобы получить продолжительность видео, к счастью, есть событие для этого

$(document).ready(function() { 
    var asset  = $('#asset')[0]; // Obtiene el Objeto 
    var tipo  = $('#asset').attr('class'); // Video, Audio, PDF 
    var duracion = 0; 
    var tiempo  = 0; 
    var porcentaje = $('#porcentaje').data('percent'); 

    asset.addEventListener('loadedmetadata', function() { 
     duracion = asset.duration; 
     tiempo = (porcentaje*duracion)/100; 

     asset.currentTime = tiempo; 
    }); 

    $("#guardar").click(function() { 
     var avance = asset.currentTime; 
     if(tipo == 'video' || tipo == 'audio'){ 
      porcentaje = parseInt((avance*100)/duracion); 
     } else if(tipo == 'pdf') { 
      porcentaje = 100; 
     } 
    }); 
}); 
+0

Спасибо. У меня было более одного часа попытки. :) – ggonzalezj7

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

  • Нет связанных вопросов^_^