flv.js简单使用示例

34 篇文章 2 订阅
19 篇文章 0 订阅

Flv.js 是由 bilibili 网站开源的 HTML5 Flash 视频(FLV)播放器,纯原生 JavaScript 开发(ECMAScript 6 编写) ,没有用到 Flash。
它的工作原理是 Flv.js 在 JavaScript 中流式解析 flv 文件流,并实时转封装为 fmp4 ,通过 Media Source Extensions 喂给浏览器,实现了 FLV 格式视频的播放。

GitHub - bilibili/flv.js: HTML5 FLV Player

如果你已经安装了nodejs可以使用 npm来安装 flv.js
当然你也可以使用其他方式进行下载
在下载好的文件夹中找到dist文件夹中的flv.min.js复制出来

可以使用简单的服务器测试

简单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>
    <div class="mainContainer">
        <video id="videoElement" class="centeredVideo" controls autoplay width="1024" height="576">Your browser is too old which doesn't support HTML5 video.</video>
    </div>
    <br>
    <div class="controls">
        <!--<button onclick="flv_load()">加载</button>-->
        <button onclick="flv_start()">开始</button>
        <button onclick="flv_pause()">暂停</button>
        <button onclick="flv_destroy()">停止</button>
        <input style="width:100px" type="text" name="seekpoint" />
        <button onclick="flv_seekto()">跳转</button>
    </div>
    <script src="flv.min.js"></script>
    <script>
        var player = document.getElementById('videoElement');
        if (flvjs.isSupported()) {
            var flvPlayer = flvjs.createPlayer({
                type: 'flv',
                url: '你的视频.flv'
            });
            flvPlayer.attachMediaElement(videoElement);
            flvPlayer.load(); //加载
        }

        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() {
            player.currentTime = parseFloat(document.getElementsByName('seekpoint')[0].value);
        }
    </script>
</body>

</html>

React测试代码:

以下getFlvVideoStreamApi为接口地址,根据自己返回视频流或mp4文件格式来调整即可

// 获取直播视频流
  const goVideo = async (params: any) => {
    getFlvVideoStreamApi(params)
      .then((res) => {
        if (res && res.code === 200 && res.data) {
          let player = videoRef.current;
          let suffix = (res.data.url || '').split('.');
          (window as any).flvPlayer?.destroy(); //一定要做销毁
          if (suffix[suffix.length - 1] === 'flv') {
            if (flvjs.isSupported()) {
              // flvjs: https://github.com/Bilibili/flv.js/blob/master/docs/api.md
              (window as any).flvPlayer = flvjs.createPlayer({
                type: 'flv',
                isLive: true,
                enableWorker: true,
                enableStashBuffer: false,
                stashInitialSize: 128,
                // 空流:'https://monitorpull.roombox.xdf.cn/719d1ad9ea2dd0c806f26cd82de07adc/719d1ad9ea2dd0c806f26cd82de07adc1134397e7d62576fba305003a812237f.flv'
                url: res.data.url, // res.data
              });
              (window as any).flvPlayer.attachMediaElement(player);
              (window as any).flvPlayer.load(); //加载
              (window as any).flvPlayer.pause();
            } else {
              console.error('not support flv file');
            }
          } else if (suffix[suffix.length - 1] === 'mp4') {
            (window as any).flvPlayer = flvjs.createPlayer({
              type: 'mp4',
              url: res.data.url,
            });
            (window as any).flvPlayer.attachMediaElement(player);
            (window as any).flvPlayer.load(); //加载
            (window as any).flvPlayer.pause();
          }
        }
      })
      .catch((err) => console.error(err, 'video err'));
  };


DOM:

<video
    ref={videoRef}
    controls
    autoPlay
    width="100%"
    height="488"
    style={{
        width: `${videoFixed ? '400px' : '100%'}`,
        height: `${videoFixed ? '288px' : '488px'}`,
    }}
>
    Your browser is too old which doesn't support HTML5 video.
</video>

其他方法规整:

video元素:const videoRef = useRef<HTMLVideoElement>(null);

flvjs引入: <script type="text/javascript" src="<%= context.config.publicPath +'flvMin.js'%>"></script>
也可以引入线上的flv.min.js

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: flv.js demo 是一个用于在网页上播放 FLV 格式视频的示例项目。flv.js 是一款基于 HTML5 技术的开源 JavaScript 库,它可以通过在浏览器中嵌入视频播放器,实现对 FLV 格式视频的播放功能。 flv.js demo 提供了一套简单易懂的示例代码,用户可以参考该示例来学习和了解如何使用 flv.js 进行视频播放。在 demo 中,用户可以看到一个简单的网页界面,上面有一个视频播放框,用户可以在框内加载并播放 FLV 格式的视频。 通过 flv.js demo,用户可以学习以下几个方面的内容: 1. 引入 flv.js 库:用户可以了解如何在网页中引入 flv.js 并进行相关的配置。 2. 加载视频文件:用户可以学习如何通过 flv.js 加载 FLV 格式的视频文件,并在网页上进行播放。这些操作可以通过 demo 中提供的接口函数进行实现。 3. 视频播放控制:用户可以掌握如何使用 flv.js 提供的播放控制函数来实现视频的播放、暂停、快进和快退等操作。 4. 图像处理和事件监听:用户可以了解如何利用 flv.js 提供的图像处理和事件监听函数,实现对视频图像的调整和对播放过程中的事件进行监听。 通过 flv.js demo,用户可以快速上手并掌握使用 flv.js 进行 FLV 格式视频播放的基本操作。该示例项目非常实用,对于想要在网页上播放 FLV 格式视频的开发者和用户来说是一份很好的指导资料。 ### 回答2: flv.js是一个开源的JavaScript库,用于在Web浏览器中播放FLV格式的视频文件。它基于HTML5技术,可以在任何支持HTML5的浏览器中运行,而无需插件或其他额外的软件。 flv.js demo是一个简单易用的示例程序,旨在展示flv.js的功能和用法。通过flv.js demo,用户可以了解如何将FLV视频文件嵌入到网页中,并通过flv.js库进行播放控制。 使用flv.js demo的步骤如下: 1. 下载flv.js库文件并将其引入到你的网页中。 2. 在网页中创建一个HTML元素,用于显示视频的画面。 3. 创建一个flv.js的实例,并指定要播放的FLV视频文件的URL。 4. 在flv.js实例上注册各种事件,以便在播放过程中处理相应的事件。 5. 调用flv.js实例的相关方法来控制视频的播放,暂停,跳转等操作。 flv.js demo提供了一些基本的控制按钮,如播放按钮,暂停按钮和进度条,用于方便用户操作视频的播放过程。 总之,flv.js demo是一个帮助用户理解和使用flv.js库的示例程序,通过它,用户可以轻松地在网页中实现FLV视频的播放,并对视频进行简单的控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值