从HTML中提取Video信息
javascript">
function extractVideosFromHTML ( htmlString ) { const dom = new DOMParser ( ) . parseFromString ( htmlString, 'text/html' ) ; const video s = Array. from ( dom. querySelectorAll ( 'video ' ) ) ; return video s. map ( video Element => video Element. getAttribute ( 'src' ) ) ;
}
获取视频的第一帧作为视频封面
javascript">
function getFirstVideoFrame ( video Url) { return new Promise ( ( resolve, reject ) => { const video Element = document. createElement ( 'video ' ) ; video Element. crossOrigin = 'anonymous' ; video Element. muted = true ; video Element. style. display = 'none' ; document. body. appendChild ( video Element) ; video Element. addEventListener ( 'loadedmetadata' , ( ) => { const canvas = document. createElement ( 'canvas' ) ; canvas. width = video Element. video Width; canvas. height = video Element. video Height; const ctx = canvas. getContext ( '2d' ) ; video Element. addEventListener ( 'seeked' , async ( ) => { ctx. drawImage ( video Element, 0 , 0 , canvas. width, canvas. height) ; const imageData = canvas. toDataURL ( 'image/jpeg' ) ; document. body. removeChild ( video Element) ; resolve ( imageData) } ) ; } , { once : true } ) ; video Element. currentTime = 0 ; } ) ; video Element. onerror = ( error ) => { reject ( error) ; } ; video Element. src = video Url; } ) ;
}
获取视频的播放时长
javascript">
function getVideoDuration ( file ) { return new Promise ( ( resolve, reject ) => { const fileReader = new FileReader ( ) ; fileReader. onload = ( event ) => { const blob = new Blob ( [ event. target. result] , { type : file. type} ) ; const video = document. createElement ( 'video ' ) ; video . src = URL . createObjectURL ( blob) ; video . onloadedmetadata = ( ) => { resolve ( video . duration) ; URL . revokeObjectURL ( video . src) ; video . remove ( ) ; } ; video . onerror = ( err ) => { URL . revokeObjectURL ( video . src) ; video . remove ( ) reject ( err) } } ; fileReader. readAsArrayBuffer ( file) ; } ) ;
}