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"
};