视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
开源代码flv.js的使用说明
2020-11-27 15:11:24 责编:小采
文档
 Flv.js

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

概览:

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

flv.js 是使用 ECMAScript 6 编写的,然后通过 Babel Compiler 编译成 ECMAScript 5,使用 Browserify 打包。

功能:

  • FLV 容器,具有 H.2 + AAC 编解码器播放功能

  • 多部分分段视频播放

  • HTTP FLV 低延迟实时流播放

  • FLV 通过 WebSocket 实时流播放

  • 兼容 Chrome, FireFox, Safari 10, IE11 和 Edge

  • 十分低开销,并且通过你的浏览器进行硬件加速

  • 以上是官方的介绍,重点是开源让我们用了,谢谢B站的大神们

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

    一、部署方案

    1、前提

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

    2、下载代码

    github地址:https://github.com/Bilibili/flv.js

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


    代码下载下来后

    我放在了D:\code\flv.js-master


    3、构建代码

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

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

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


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

    npm install

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


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


    3)安装生成工具

    npm install -g gulp

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

    gulp release

    然后D:\code\flv.js-master\dist里就终于得到我们需要flv.js和flv.min.js代码了

    flv.js压缩前代码

    flv.min.js压缩后代码


    二、整合方案

    代码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>

    结果


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

    相关文章:

    如何看待B站 (bilibili) 开源 HTML5 播放器内核 flv.js?

    全面解读flv.js代码

    下载本文
    显示全文
    专题