首页 > 其他分享 >获取视频时长,单位s

获取视频时长,单位s

时间:2023-09-18 14:45:34浏览次数:35  
标签:视频 onloadedmetadata 单位 获取 video reslove duration let audio

/**
 * 获取视频时长,单位s
 * how to use
 * getVideoDuration('https://xx.xxx.mp4').then(res=>{
 *     console.log("视频时长",res)
 * })
 */
export function getVideoDuration(url) {
  let ua = navigator.userAgent.toLowerCase();
  let isWx = ua.match(/MicroMessenger/i) == 'micromessenger'; //微信端
  let u = navigator.userAgent;
  let isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios手机终端

  if (isWx && isiOS) {
    // IOS的微信环境无法触发onloadedmetadata,需要处理
    return new Promise((reslove) => {
      let audio = document.createElement('audio'); //即使是视频文件,这里也不能使用video,需要使用audio代替
      audio.preload = 'metadata';
      audio.src = url;
      audio.muted = true;
      audio.play().then(() => audio.pause());
      audio.onloadedmetadata = () => {
        alert(audio.duration || '666');
        reslove(parseInt(audio.duration.toString(), 10));
        audio = null;
      };
    });
  } else {
    return new Promise((reslove) => {
      let video = document.createElement('video');
      video.preload = 'metadata';
      video.src = url;
      video.onloadedmetadata = () => {
        reslove(parseInt(video.duration.toString(), 10));
        video = null;
      };
    });
  }
}

标签:视频,onloadedmetadata,单位,获取,video,reslove,duration,let,audio
From: https://www.cnblogs.com/huihuihero/p/17711809.html

相关文章

  • EasyGBS视频存储服务器具有多种常见功能
    EasyGBS这些功能使得视频存储服务器成为一种非常有用的设备,可以广泛应用于各种需要存储和管理的视频数据的场景中。 1.存储功能:视频存储服务器最基本的功能是存储大量的视频文件。这些服务器通常配备高容量的硬盘,可以存储数百到数千个视频文件。2.检索功能:视频存储服务器通常......
  • 视频直播系统源码,Android EditText不显示提示文字hint
    视频直播系统源码,AndroidEditText不显示提示文字hintEditText不显示提示文字hint原因,有可能是hint的字体颜色和EditText的背景颜色一样,需要设置颜色值android:textColorHint="@color/gray"。<EditText      android:id="@+id/ed_name"      android:la......
  • 2023-09-18 taro小程序之onGetPhoneNumber无法获取用户手机号回调?console.log没反应??==
    问题描述:一个微信登录按钮,点击获取用户手机号进而登录;按钮用的是taro框架的button组件,其中用到button的onGetPhoneNumber方法,给这个方法绑定一个事件A,用户点击获取手机号后产生回调进而做下一步的业务;问题就是事件A没有获得任何回调,仿佛onGetPhoneNumber不存在。原因:没有满足使用......
  • java获取前一天日期
     java获取前一天日期 importjava.util.Calendar;publicclassMain{publicstaticvoidmain(String[]args){//获取今天的日期Calendartoday=Calendar.getInstance();//将今天的日期设置为前一天Calendaryesterday=Calendar.getInstan......
  • EasyGBS安防视频监控有哪些存储方式,哪种存储方式最优
    EasyGBS视频监控系统涉及到大量的视频数据,需要对这些数据进行存储,以备日后查看或备份。视频监控的存储需求需要根据场所的实际情况进行选择,以保证监控数据的有效存储和日后的调阅、回溯。 当前视频监控的存储方式,通常有以下几种:1.硬盘录像机(DVR)存储:DVR利用硬盘来储存视频数据,......
  • EasyGBS视频融合云平台在数字化民生服务中可以发挥重要作用
    一、方案简介EasyGBS国标视频融合云平台基于端-边-云一体化架构,以推动基层治理模式创新、提升民生服务水平为目标,在智慧社区、数字乡村、智慧养老等民生安全方面发挥着卓越作用。该平台具有海量视频接入、汇聚与管理、处理及分发等视频能力,可实现视频直播、录像、回放、检索、云......
  • 计算机视觉算法中的视频摘要(Video Summarization)
    引言随着数字视频内容的爆炸式增长,如何高效地获取视频的关键信息成为了一个重要的问题。视频摘要(VideoSummarization)作为计算机视觉领域的一个重要研究方向,旨在通过自动化方法从长时间的视频中提取出关键的、代表性的内容,以便用户能够快速浏览和获取视频的核心信息。本文将介绍视......
  • 2020-1-28-coding获取项目列表
    layout:posttitle:coding获取项目信息categories:coding-posttag:codingapicoding获取项目信息接口URLhttps://<team-name>.coding.net/api/projects请求方式GET请求header参数:cookie:eid请求Query参数参数示例值必填参数描述page1否页数page......
  • 2020-1-28-coding获取某个项目中的任务
    layout:posttitle:coding获取某个项目中的任务categories:coding-postbackground_music:'<iframeframeborder="no"border="0"marginwidth="0"marginheight="0"width=100%height=100src="//music.163.com/outchain/p......
  • 【算法】如何获取一个数组的全排列?
    问题描述给定一个任意数组,如何获得数组的全排列,例如[1,2,3]的全排列数组为[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,2,1],[3,1,2]],即包含所有排列结果的长度为\(A_{n}^{n}\)的数组。算法functionpermute(arr){constresult=[];perm(arr,0,result);returnr......