Skip to content

userhjp/pretty_video

Repository files navigation

video播放器

  • 自定义 进度条、进度条拖动、音量控制、倍速切换、全屏 等基础功能。
  • 基于video标签实现,只是单纯自定义了控制条,支持视频格式参考video标签。
  • 简单处理了 移动端 和 PC端 的事件兼容,例如拖动事件、鼠标移入进度条事件等。

install

npm install pretty-video;

使用

 // 直接浏览器标签引入
 <body>
     <div id="MyVideo"></div>
    <script type="text/javascript" src="./video.min.js"></script></body>
    <script type="text/javascript">
        window.onload = function () {
            var video = document.getElementById('MyVideo');
            var myVideo = new PrettyVideo();
            myVideo.init(video, {
                src: 'http://vfx.mtime.cn/Video/2019/03/19/mp4/190319222227698228.mp4',
                poster: 'http://a3.att.hudong.com/68/61/300000839764127060614318218_950.jpg',
            });
        }
    </script>
 </body>

 // es6
 import PrettyVideo from 'pretty-video';

 const myVideo = new PrettyVideo();
 myVideo.init(elId, obj: Config);

Config

// config
export interface Config {
    /** 视频加载是否自动播放 默认false */
    autoplay?: boolean;
    /** 播放地址 */
    src?: string;
    /** 封面 */
    poster?: string;
    /** 是否自动隐藏控制栏 controls 为 true 有效*/
    autoHideControls?: boolean;
    /** 是否允许点击、拖动进度条跳转进度 默认true*/
    isFastForward?: boolean;
    /** 是否隐藏全屏按钮 默认fasle*/
    hideFullScreen?: boolean;
    /** 显示控制条 默认true */
    controls?: boolean;
    /** 视频结束是否循环播放 */
    loop?: boolean;
    /** 预加载 默认 auto*/
    preload?: 'auto' | 'meta' | 'none';
}
// 方法
export default class PrettyVideo {
    /** 初始化 */
    init(el: string | HTMLElement, config: Config): void;
    /** 获取当前播放时长和总时长 */
    getDuration(): { currentSecond: number, durationSecond: number, currentText: string, durationText: string };
    /** 修改config */
    setupConfig(newConfig: Config): void;
    /** 修改播放地址 */
    setUrl(obj: { src: string, poster?: string }): void;
    /** 重置播放 */
    reload(): void;
    /** 播放 */
    play(): void;
    /** 暂停 */
    pause(): void;
     /** 是否暂停状态 */
    isPause(): boolean;
     /** 设置音量 0-1 */
    setVolum(num: number): void;
    /** 监听事件 'loadstart' | 'canplay' | 'play' | 'pause' | 'waiting' | 'playing' | 'ended' | 'error' | 'seeked' | 'loadedmetadata' */
    on(eventName: string, callback: (obj: { type }) => void): void;
    /** 取消事件监听 */
    unOn(eventName: string): void
    /** 销毁video包括dom元素 */
    dispose(): void
}

其他

  1. IE兼容 iE10+