使用 Flv.js 和 Reflv 播放视频

news/2025/2/4 10:32:23/

1.背景

传统的播放视频是采用 flash 播放器方式,然而各大浏览器厂商都不再支持flash , 我们不得不寻找其他解决方案。

2.说明

2.1 Flv.js

flv.js 是一个HTML5 Flash视频(FLV)播放器,它通过纯JavaScript编写,没有使用 Flash。它的工作原理是 Flv.js 在 JavaScript 中流式解析 flv 文件流,并实时转封装为 fmp4 ,通过 Media Source Extensions 喂给浏览器。

它依赖于媒体源扩展 MSE ( Media Source Extensions ) 来工作。它来自 Bilibili 开发和开源。

主站:https://github.com/Bilibili/flv.js/
示例:http://bilibili.github.io/flv.js/demo/

功能:

  • FLV 容器,具有 H.264 + AAC 编解码器播放功能
  • 多部分分段视频播放
  • HTTP FLV 低延迟实时流播放
  • FLV 通过 WebSocket 实时流播放
  • 兼容 Chrome, FireFox, Safari 10, IE11 和 Edge
  • 十分低开销,并且通过你的浏览器进行硬件加速

flv.js依赖的浏览器特性兼容列表

  • HTML5 Video
  • Media Source Extensions
  • WebSocket
  • HTTP FLV: fetch 或 stream

2.1 reflv

reflv 是对 flv.js 的 react 组件封装。

3. DEMO

3.1 编写一个 直接使用flv.js 的 DEMO

步骤如下:

  • (1) 首先,需要个 flv 源
  • (2) 引入 flv.js
  • (3) JS代码播放

(1) 首先,需要个 flv 源
如果有后端提供个最好,如果有个视频比如mp4的,可以下载个 ffmpeg 工具进行转换。

ffmpeg 转换指令

ffmpeg -i demo.mp4 -c:v libx264 -crf 19 demo.flv 

(2) 引入 flv.js

通过 NPM 安装

Installation
npm install --save flv.js

那如果想直接在原生js下使用呢? 找到上面安装后的文件夹 node_module/flv.js/dest 目录下,把 js 文件复制出来即可。

(3) JS代码播放
先 createPlayer,加载控件,执行 flvPlayer.play() 即可。

<script src="flv.min.js"></script>
<video id="videoElement" controls autoplay muted></video>
<script>if (flvjs.isSupported()) {var videoElement = document.getElementById('videoElement');var flvPlayer = flvjs.createPlayer({type: 'flv',url: 'movie.flv'});flvPlayer.attachMediaElement(videoElement);flvPlayer.load();flvPlayer.play();}
</script>

3.2 编写一个 直接使用 Rflv 的 DEMO

reflv 是对 flv.js 的 react 组件封装, 便于在 React 工程下直接使用。

步骤:

  • (1) 安装 Rflv
  • (2) 使用 Rflv 标签
  • (3) 更改 视频源 地址

(1) 安装 Rflv

(2) 使用 Rflv 标签

    import Reflv from 'reflv';...class VideoPlay extends React.Component {constructor(props) {super(props);this.state = {url: props.url};}componentWillReceiveProps (nextProps) {console.log("nextProps = ",nextProps.url)this.setState({url: nextProps.url});}render() {return (<div><h1>url is:{this.state.url}</h1><Reflv key={this.state.url} url={this.state.url} type="flv"  cors config={{enableWorker: true,enableStashBuffer: false,stashInitialSize: 128,}}></Reflv></div>);}}

注意: 在组件中修改 url 属性不会导致 Rflv 重新渲染,需要加上 key={this.state.url} 就可以了

<Reflv key={this.state.url} url={this.state.url} type="flv" 

遇到不能自动播放的情况
原因是包含声音,在没有用户产生交互的情况下是不能自动播放的。
解决方法:给video标签加入<video muted></video> 静音即可。

<video muted></video> 

4.参考

https://github.com/Bilibili/flv.js/
https://www.oschina.net/p/flv-js?hmsr=aladdin1e1

https://www.jqhtml.com/7847.html

https://www.javaroad.cn/questions/151551

5.我的代码示例

1.先npm下载

npm install flv.js

2.代码引入

muted:  自动播放

loop="true"   循环播放

<template><div><videoautoplaycontrolswidth="100%"height="500"id="myVideo"mutedloop="true"></video></div>
</template><script>
import flvjs from "flv.js";export default {props: {msg: String,},mounted() {this.$nextTick(() => {this.videoPlayer();});},methods: {videoPlayer() {if (flvjs.isSupported()) {var videoElement = document.getElementById("myVideo");var flvPlayer = flvjs.createPlayer({type: "mp4",url: "//lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/byted-player-videos/1.0.0/xgplayer-demo-720p.mp4", //你的url地址});flvPlayer.attachMediaElement(videoElement);flvPlayer.load();flvPlayer.play();}},},
};
</script>


http://www.ppmy.cn/news/542946.html

相关文章

批量下载FLV文件

目的&#xff1a;帮MM下载新概念英语视频教程&#xff0c;方便在MP4中学习英语 前期工作&#xff1a;首先去迅雷中搜索&#xff0c;能搜索到所需的视频教程&#xff0c;不过并不完整&#xff0c;RMVB格式的尽管体积比较小&#xff0c;不过为了在MP4使用&#xff0c;我想流行的…

4kvideodownloader视频下载工具

帮助你从YouTube、哔哩哔哩等流媒体网站上下载频道视频&#xff0c;清晰度挺好的。此外还有一个订阅功能&#xff0c;如果他更新了&#xff0c;视频会自动下载下来。 安装 解压到你的安装文件夹&#xff0c;打开SetUp.msi&#xff0c; 改变安装路径 安装完成后&#xff0c;在…

vue加载flv格式的视频遇到的bug,及解决方法

vue加载flv格式的视频 遇到的问题描述 第一次打开时报错 javascriptjavascriptjavascript import flvjs from "flv.js";if (flvjs.isSupported()) {let videoElement document.getElementById(videoElement);videoElement document.getElementById(videoElement);t…

视频下载终极利器!简单粗暴,支持全网视频下载!

每当我们想要下载网上视频的时候&#xff0c;需要借助各种工具软件&#xff0c;费时又耗力&#xff0c;甚至可能不知如何去下载。 今天小编给大家分享一个视频在线下载网站&#xff0c;支持30多个平台视频下载&#xff0c;不需要借助什么工具&#xff0c;也不用考虑转格式问题…

如何下载在线视频:流行视频FLV下载

现在在线视频越来越多了,想下载怎么办?下面我总结了三条方法,好好学习哦。恩。主要是针对FLV视频的,什么是FLV视频?就是土豆网,六间房,56,mofile,youtube等视频网站播放的流媒体。其他的诸如WMV,MPG等格式,我就稍微讲下。如果是WMP视频,右击视频--属性,即可看到真…

自制腾讯视频去除水印Chrome插件

前景提要 前几期写了一篇关于谷歌插件制作的文章&#xff0c;但是因为没有正经的小实战&#xff0c;一直鸽了这么多期文章&#xff0c;这里写一篇比较受关注的腾讯视频的水印去除的文章&#xff0c;方便各位日后爬取腾讯视频的时候总带其水印爬虫。 学习制作谷歌插件对于爬虫喜…

教你如何用FVD Downloader下载在线视频

它可以下载MP3或Flash游戏、下载音乐、高清下载、下载视频等&#xff0c;让您获取网页媒体更快捷&#xff0c;现新增对视频网站的解析&#xff0c;包括优酷、土豆等84家视频网站。 首先在360浏览器上搜索插件去安装fvd插件 安装好之后在扩展栏里就就会出现fvd的插件 当你播放视…

【软件设计师暴击考点】UML知识高频考点暴击系列

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;软件…