当前位置:澳门贵宾厅 > Web > 并且应该在 DPlayer.min.js 之前加载
并且应该在 DPlayer.min.js 之前加载
2020-04-15

时间: 2019-12-19阅读: 173标签: 视频

本文转自PHP中文网。

DPlayer是一个支持弹幕的 HTML5 视频播放器。支持 Bilibili 视频和 danmaku,实时视频(HTTP Live Streaming,M3U8格式)以及 FLV 格式。

Flv.js

是 HTML5 Flash 视频(FLV)播放器,纯原生 JavaScript 开发,没有用到 Flash。由 bilibili 网站开源。

用法

概览:

一个实现了在 HTML5 视频中播放 FLV 格式视频的 JavaScript 库。它的工作原理是将 FLV 文件流转码复用成 ISO BMFF(MP4 碎片)片段,然后通过 Media Source Extensions 将 MP4 片段喂进浏览器。

并且应该在 DPlayer.min.js 之前加载。flv.js 是使用 ECMAScript 6 编写的,然后通过 Babel Compiler 编译成 ECMAScript 5,使用 Browserify 打包。

HTML

功能:

以下是我整理的集成使用方案

div /div!-- ... --script src="dist/DPlayer.min.js"/script

一、部署方案

选项

1、前提

首先这里要使用到nodejs和npm,如何安装和部署在我之前的文章有写过了,这里不再多说,需要可以看自行搜索。

var dp = new DPlayer({ element: document.getElementById('player1'), // 可选,player元素 autoplay: false, // 可选,自动播放视频,不支持移动浏览器 theme: '#FADFA3', // 可选,主题颜色,默认: #b7daff loop: true, // 可选,循环播放音乐,默认:true lang: 'zh', // 可选,语言,`zh'用于中文,`en'用于英语,默认:Navigator language screenshot: true, // 可选,启用截图功能,默认值:false,注意:如果设置为 true,视频和视频截图必须启用跨域 hotkey: true, // 可选,绑定热键,包括左右键和空格,默认值:true preload: 'auto', // 可选,预加载的方式可以是'none''metadata''auto',默认 值:'auto' video: { // 必需,视频信息 url: '若能绽放光芒.mp4', // 必填,视频网址 pic: '若能绽放光芒.png' // 可选,视频截图 }, danmaku: { // 可选,显示弹幕,忽略此选项以隐藏弹幕 id: '9E2E3368B56CDBB4', // 必需,弹幕 id,注意:它必须是唯一的,不能在你的新播放器 中使用这些: `` api: '', // 必需,弹幕 api token: 'tokendemo', // 可选,api 的弹幕令牌 maximum: 1000, // 可选,最大数量的弹幕 addition: ['?aid=4157142'] // 可选的,额外的弹幕,参见:`Bilibili弹幕支持` }});

2、下载代码

github地址
需要同步最新代码的同学要使用git,没有git的也可以下载zip文件

图片 1

image

代码下载下来后

我放在了D:codeflv.js-master

图片 2

image

事件绑定

3、构建代码

因为代码不能直接使用,我们需要用到nodejs的npm模块进行构建

dp.on(event, handler)事件:

1)先打开cmd命令行窗口(这里记得用右键打开以管理员身份运行),不然可能运行会error

cd命令到放置代码的地方,我是放在D:codeflv.js-master上

图片 3

image

play: DPlayer 开始播放时触发 pause: DPlayer 暂停时触发 canplay: 在有足够的数据可以播放时触发 playing: DPlayer 播放时定期触发 ended: DPlayer 结束时触发 error: 发生错误时触发

2)执行npm构建,这里是进行安装开发环境的操作

npm install

等待执行完后,会出现下图

图片 4

image

D:codeflv.js-master会多出了一个node_modules文件夹

图片 5

image

HLS支持(实时视频,M3U8格式)

3)安装生成工具

npm install -g gulp

图片 6

image

它需要 hls.js 库,并且应该在 DPlayer.min.js 之前加载。实时弹幕尚不支持。

4)包装和最小化JS放在dist文件夹里

gulp release

图片 7

image

然后D:codeflv.js-masterdist里就终于得到我们需要flv.js和flv.min.js代码了

flv.js压缩前代码

flv.min.js压缩后代码

图片 8

image

div /div!-- ... --script src="plugin/hls.min.js"/scriptscript src="dist/DPlayer.min.js"/scriptscriptvar dp = new DPlayer({// ...video: {url: 'xxx.m3u8'// ...}});/script

二、整合方案

代码DEMO-html页面

<!DOCTYPE html>
<html>

<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
    <title>flv.js demo</title>

    <style>
        .mainContainer {
            display: block;
            width: 1024px;
            margin-left: auto;
            margin-right: auto;
        }

        .urlInput {
            display: block;
            width: 100%;
            margin-left: auto;
            margin-right: auto;
            margin-top: 8px;
            margin-bottom: 8px;
        }

        .centeredVideo {
            display: block;
            width: 100%;
            height: 576px;
            margin-left: auto;
            margin-right: auto;
            margin-bottom: auto;
        }

        .controls {
            display: block;
            width: 100%;
            text-align: left;
            margin-left: auto;
            margin-right: auto;
        }
    </style>
</head>

<body>

    <p class="mainContainer">
        <input name="urlinput" class="urlInput" type="text" value="http://localhost/Test/test1.mp4"/>
        <video name="videoElement" class="centeredVideo" controls autoplay width="1024" height="576">
            Your browser is too old which doesn't support HTML5 video.
        </video>
        <br>
        <p class="controls">
            <button onclick="flv_load()">Load</button>
            <button onclick="flv_start()">Start</button>
            <button onclick="flv_pause()">Pause</button>
            <button onclick="flv_destroy()">Destroy</button>
            <input style="width:100px" type="text" name="seekpoint"/>
            <button onclick="flv_seekto()">SeekTo</button>
        </p>
    </p>

    <script src="flv.min.js?1.1.9"></script>

    <script>
        function flv_load() {
            console.log('isSupported: ' + flvjs.isSupported());
            var urlinput = document.getElementsByName('urlinput')[0];
            var xhr = new XMLHttpRequest();
            xhr.open('GET', urlinput.value, true);
            xhr.onload = function (e) {
                var player;
                var element = document.getElementsByName('videoElement')[0];
                if (typeof player !== "undefined") {
                    if (player != null) {
                        player.unload();
                        player.detachMediaElement();
                        player.destroy();
                        player = null;
                    }
                }

                player = flvjs.createPlayer({
                    type: 'mp4',
                    url: urlinput.value
                });
                player.attachMediaElement(element);
                player.load();
            }
            xhr.send();
        }

        function flv_start() {
            player.play();
        }

        function flv_pause() {
            player.pause();
        }

        function flv_destroy() {
            player.pause();
            player.unload();
            player.detachMediaElement();
            player.destroy();
            player = null;
        }

        function flv_seekto() {
            var input = document.getElementsByName('seekpoint')[0];
            player.currentTime = parseFloat(input.value);
        }

        function getUrlParam(key, defaultValue) {
            var pageUrl = window.location.search.substring(1);
            var pairs = pageUrl.split('&');
            for (var i = 0; i < pairs.length; i++) {
                var keyAndValue = pairs[i].split('=');
                if (keyAndValue[0] === key) {
                    return keyAndValue[1];
                }
            }
            return defaultValue;
        }

        var urlInputBox = document.getElementsByName('urlinput')[0];
        var url = decodeURIComponent(getUrlParam('src', urlInputBox.value));
        urlInputBox.value = url;

        document.addEventListener('DOMContentLoaded', function () {
            flv_load();
        });
    </script>

</body>

</html>

结果

图片 9

image

Ps:视频要放在服务器上,这里我用的是Java Web项目,tomcat部署,视频找个位置就可以了,主要是记住位置

FLV支持

它需要 flv.js 库,并且应该在 DPlayer.min.js 之前加载。

div /div!-- ... --script src="plugin/flv.min.js"/scriptscript src="dist/DPlayer.min.js"/scriptscriptvar dp = new DPlayer({// ...video: {url: 'xxx.flv'// ...}});/script

使用bundler模块

var DPlayer = require('DPlayer'); var dp = new DPlayer(option);

其他类似工具: DPlayer, videos.js,ckplayer,Vue-DPlayer, vue-video-player