npm install h265player
import h265player from "h265player"; import Events from "h265player/dist/events"; const el = document.querySelector(".play-container"); const src = "https://homfen.github.io/h265player/data/video2/video.m3u8"; const libPath = "https://homfen.github.io/h265player/lib/"; const player = new h265player(el,{sourceURL: src, type: "HLS", isLive: false, libPath, playBackRate: 1, muted: false, controlBar: true, maxBufferLength: 6000, autoPlay: false, autoScale: true, defaultAlert: false }); const timeupdate = () =>{if (!player) return; const currentTime = player.currentTime; console.log(currentTime)}; player.events.on(Events.ImagePlayerRenderEnd, timeupdate); 播放
player.play(); 暂停
player.pause(); 跳转,ms
player.seek(10 * 1000); 修改倍速
player.changeSpeed({value: 0.5}); 切换视频地址
player.changeSrc(url); 改变播放器大小
player.resize(width, height); 全屏
player.fullScreen(); 退出全屏
player.exitFullScreen(); 绑定事件,只适用 Events 中的 Player 事件
player.on('onPlay', () =>{console.log('play')}); 解绑事件,只适用 Events 中的 Player 事件
const callback = () =>{}; player.off('onPlay', callback); 获取已缓存范围,ms
console.log(player.buffer()); 销毁
player.destroy(); const Events ={ProcessorResetEnd: "DataProcessorController.processorResetEnd", DataProcessorReady: "DataProcessorController.dataProcessorReady", // DecodeResetEnd: 'DecodeController.resetEnd', DecodeStartDecode: "DecodeController.startDecode", DecodeFlush: "DecodeController.flush", DecodeDecoded: "DecodeController.decoded", DecodeApppendEnd: "DecodeController.appendEnd", DecodeFlushEnd: "DecodeController.flushEnd", DecodeReady: "DecodeController.ready", DemuxResetEnd: "DemuxController.resetEnd", DemuxStartDemux: "DemuxController.startDemux", DemuxLast: "DemuxController.last", DemuxVideo: "DemuxController.video", DemuxAAC: "DemuxController.AAC", DemuxReady: "DemuxController.ready", DemuxCodecError: "DemuxController.codecError", ImagePlayerRenderEnd: "ImagePlayer.renderEnd", ImagePlayerWait: "ImagePlayer.wait", ImagePlayerReady: "ImagePlayer.ready", ImagePlayerEnd: "ImagePlayer.end", ImagePlayerBuffeUpdate: "ImagePlayer.bufferUpdate", ImagePlayerSwitchPool: "ImagePlayer.switchPool", ControlBarPlay: "ControlBar.onPlay", ControlBarPause: "ControlBar.onPause", ControlBarPauseLoading: "ControlBar.onPauseLoading", LoadDataReadBufferByNo: "LoadData.readBufferByNo", LoadDataReadBuffer: "LoadData.readBuffer", LoadDataRead: "LoadData.onRead", LoadDataSeek: "LoadData.onSeek", LoadDataFirstLoaded: "LoadData.onFirstLoaded", LoaderPlayListStart: "Loader.playlistStart", LoaderLoading: "Loader.onLoading", LoaderError: "Loader.onError", LoaderLoaded: "Loader.onLoaded", LoaderUpdateSpeed: "Loader.updateSpeed", LoaderLoadFile: "Loader.loadFile", LoaderPlayListLoaded: "Loader.playlistLoaded", AudioPlayerReady: "AudioPlayer.MSEReady", AudioPlayerDataReady: "AudioPlayer.dataReady", AudioPlayerWait: "AudioPlayer.wait", AudioPlayerEnd: "AudioPlayer.end", AudioPlayerPlaySuccess: "AudioPlayer.playSuccess", AudioPlayerPlayFail: "AudioPlayer.playFail", PlayerMaxPTS: "DemuxController.maxpts", PlayerSeekEnd: "Player.seekend", PlayerSpeedTo: "Player.speedTo", PlayerChangeRate: "Player.changeRate", PlayerChangeSrc: "Player.changeSrc", PlayerPlaying: "Player.playing", PlayerTimeUpdate: "Player.timeUpdate", PlayerbufferUpdate: "Player.bufferupdate", PlayerResetReady: "Player.resetReady", PlayerWait: "Player.wait", PlayerLoadNext: "Player.loadNext", PlayerOnPlay: "Player.onPlay", PlayerOnPause: "Player.onPause", PlayerOnSeek: "Player.onSeek", PlayerOnVolume: "Player.onVolume", PlayerReady: "Player.ready", /** * Event handling during player playing * @event Player#play * @type{Player} * */ PlayerPlay: "Player.play", PlayerReset: "Player.reset", PlayerLoadedMetaData: "Player.loadedMetaData", /** * Event handling after playing ends * @event Player#end * @type{Player} * */ PlayerEnd: "Player.end", /** * Event handling when playing pauses * @event Player#pause * @type{Player} * */ PlayerPause: "Player.pause", /** * Event handling when player seeking data * @event Player#seeking * @type{Player} * */ PlayerSeeking: "Player.seeking", PlayerAlert: "Player.alert", PlayerThrowError: "Player.throwError", StreamDataReady: "StreamController.dataReady" };