javascript - 获取视频时长 jQuery

标签 javascript php jquery time duration

我有一个问题。我正在尝试获取源的持续时间。

我想做下一步:当页面加载时,我需要获取源的持续时间,但问题是,当我想要获取持续时间时,显然不可见,只有当我按 a 时才能获取持续时间按钮。我需要知道自开始以来的持续时间,因为我需要计算视频/音频的位置并通过 currentTime 发送。

I try to do "alert" but the result is "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);
    });
});

仅此而已。谢谢。

古斯塔沃·G.

最佳答案

您至少必须等到元数据加载后才能获取视频时长,幸运的是有一个相关事件

$( 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;
        }
    });
});

关于javascript - 获取视频时长 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34620231/

相关文章:

javascript - 如何检查元素是否具有指定类以外的类?

javascript - 尝试使用 JavaScript 和两个包装器更改标题背景图像

javascript - Spring MVC 和 Bootstrap - css、img 工作 .js 不工作

php - ob_flush 和 ob_end_flush 有什么区别?

php - 每个 div 和设计(完整网站)如果数据库有 1 行所有 div 打印 1 次,如果更多时间,则根据数据重复多个时间。为什么

php - Symfony 无法识别通过 Guzzle 多部分/表单数据请求上传的多个文件

jquery - 如何通过 JavaScript 初始化(和重新初始化)bootstrap-select

javascript - 如何重置/删除 vuex 存储数据?

javascript - Outlook 和 OWA - 使用 Apps for Office 生成 token 并发出 EWS 请求失败

javascript - 循环输入字段;两次迭代后停止