flv是什么格式(flv详细介绍5分钟看懂)

FLV(Flash Video)流媒体格式,是随着 Flash MX 的推出发展而来的视频格式。其文件体积小,一般1分钟只占1MB,是普通视频文件大小的1/3,且视频质量良好,广受视频网站欢迎。然而,FLV 格式往往利用 Flash Player 进行解码播放,但如今,主流浏览器都已经放弃支持 Flash Playe。同时,HTML5 原生的 video 标签并不支持 FLV 格式。如何在 HTML5 时代,还能发挥 FLV 视频格式的优势呢?作为一个蓬勃发展中的视频网站,bilibili 开源了 FLV 视频的 HTML5 播放器,使得 HTML5 与 FLV 得以结合。

Flv.js - FLV视频的HTML5播放器

FLV视频播放器

简介

Flv.js,是 bilibili(哔哩哔哩)在 Github 上开源的 HTML5 的 FLV 视频播放器,项目位于
https://github.com/bilibili/flv.js,目前版本为 v1.5.0。Flv.js 支持 H.264 + AAC/MP3 编码的 FLV 视频,支持视频分片,支持低延迟的 HTTP/WebSocket 协议的 FLV 格式的直播视频流,兼容 Chrome、Firefox、Safari 10、IE 11 和 Edge,具有极低的消耗,支持浏览器硬件加速。原理上,Flv.js 把 FLV 视频流转码为 ISO BMFF(切片的MP4),然后把切片放到 HTML 的 video 元素中进行播放。

Flv.js - FLV视频的HTML5播放器

flv.js项目

安装

Flv.js 可以使用 NPM 直接安装,加入到前端项目依赖中:

npm install --save flv.js

也可以使用国内镜像的 CNPM 进行安装:

cnpm install --save flv.js

还可以在本地进行构建:

npm install             # 安装开发依赖
npm install -g gulp  # 安装构建工具 gulp
gulp release           # 构建发布

Flv.js 使用 ECMAScript 6 编写,使用 Babel Compiler 转译到 ECMAScript5,并使用 Browserify 进行打包。

示例

Flv.js 的架构设计如下:

Flv.js - FLV视频的HTML5播放器

Flv.js架构设计

核心部分为 FlvDemuxer 和 MP4Remuxer,分别对 FLV 视频进行分离,和封装为 MP4 视频。内部通过多个Controller控制器,发送指令,对数据流的操作进行控制。

Flv.js 使用简单,通过接口 createPlayer 实例化播放器,配置对应的视频源,然后,挂载到 DOM 容器上,并调用 load() 进行加载,调用 play() 进行播放:

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

注意到,flv.js 提供了 isSupported 接口,可以很方便地判断 Flv.js 是否支持当前的浏览器环境。Flv.js提供了一个测试用的 demo 页面,可以进行视频播放的测试:

Flv.js - FLV视频的HTML5播放器

Flv.js demo

Flv.js 主要提供了3个函数:

  • flvjs.createPlayer():接受配置,实例化播放器
  • flvjs.isSupported():是否支持当前浏览器
  • flvjs.getFeatureList():支持的特性的列表

还有3个类:

  • flvjs.FlvPlayer:FLV 播放器
  • flvjs.NativePlayer:原生 HTML5 播放器,可以用户单 MP4 文件的播放
  • flvjs.LoggingControl:日志控制

以及3个枚举:

  • flvjs.Events:播放器事件
  • flvjs.ErrorTypes:错误类型
  • flvjs.ErrorDetails:错误具体信息

使用时的主要接口是 createPlayer,它的函数签名如下:

function createPlayer(mediaDataSource: MediaDataSource, config?: Config): Player;

其中 mediaDataSource 进行视频流配置,常用的参数包括:

  • type:视频类型,flv 或 mp4
  • isLive:是否为直播视频流
  • cors:获取视频数据时是否启用 CORS
  • url:视频流地址
  • segments:视频切片配置

而 config 进行 flv.js 播放器内部配置,包括worker、缓存、加载策略等的配置。

对于体积较大的视频,往往在服务器中会进行切片处理。Flv.js 支持对于切片视频的加载播放,通过提供 segments 配置。segments 是一个切片配置的列表,每个配置包括了视频长度、文件大小和视频地址:

"segments": [
        {
            "duration": 1234,  // in milliseconds
            "filesize": 5678,  // in bytes
            "url": "/segments-1.flv"
        },
        {
            "duration": 2345,
            "filesize": 6789,
            "url": "/segments-2.flv"
        },
        {
            "duration": 4567,
            "filesize": 7890,
            "url": "/segments-3.flv"
        }
        // more segments...
    ]

Flv.js 支持直播视频流的播放,通过 isLive 配置实现,支持 HTTP 协议的视频流:

{
    // HTTP FLV
    "type": "flv",
    "isLive": true,
    "url": "/live/livestream.flv"
}

以及 WebSocket 协议的视频流:

{
    // FLV over WebSocket
    "type": "flv",
    "isLive": true,
    "url": "/live/livestream.flv"
}
Flv.js - FLV视频的HTML5播放器

flv.js项目

总结

Flv.js 作为一个 HTML5 视频播放器,实现了通过原生 Javascript,在 HTML5 页面上进行 FLV 视频的播放,充分利用了 FLV 格式优秀的体积和质量,提供了更为优秀的播放体验,降低了视频服务器和负荷,同时支持切片、直播、懒加载等进阶特性,功能丰富。Flv.js 目前已被广泛应用到视频播放网站中,使用者众多,同时代码质量高,值得使用、研究和学习。

Flv.js - FLV视频的HTML5播放器

HTML5 + FLV

声明:所有白马号原创内容,未经允许禁止任何网站及个人转载、采集等一切非法引用。本站已启用原创保护,有法律保护作用,否则白马号保留一切追究的权利。发布者:白马号,转转请注明出处:https://www.bmhysw.com/article/25102.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
白马号白马号

相关推荐

  • 怎么分区?硬盘分区步骤和技巧分享

    怎么分区?硬盘分区步骤和技巧分享 步骤一:备份重要数据 步骤二:打开磁盘管理工具 步骤三:选择硬盘进行分区 步骤四:缩减卷或者新建卷 步骤五:设置卷大小和分区格式 技巧分享:如何更好地分区 步骤一:备份重要数据 在进行硬盘分区之前,务必备份重要数据。分区的过程中有可能会导致数据丢失,因此备份数据是非常必要的。 步骤二:打开磁盘管理工具 打开计算机管理控制台,…

    2023-06-10
    00
  • 转换格式的免费软件有哪些(图片 视频 pdf等转换格式软件推荐)

    转换格式软件有很多,比如视频、音乐类型转换软件,或者办公类的PDF、WORD、EXLCE、PPT、CAD、AI、PS、等都有不同的转换格式软件,但很多都是收费的,哪么白马号今天介绍的软件是免费的,又好用。 音乐、视频、图片类转换格式软件推荐 格式工厂 格式工厂 (Format Factory) 是一款功能全面的格式转换软件,支持转换几乎所有主流的多媒体文件格…

    2022-12-12
    00
  • 1688企业开店流程及费用(阿里巴巴开店流程有哪些)

    现在各大电商平台开网店都非常方便,很多人都选择了以在网上开网店来作为自己的副业,我们的外贸人在阿里巴巴开店可以让我们的产品销售多一个渠道,而且还可以让我们在阿里巴巴国际站以及它们旗下的各种平台上的权重和信誉都能够提高。那么外贸人在阿里巴巴开店需要有哪些流程呢?新手开店又需要注意什么?本文就来为您介绍几个阿里巴巴开店的知识。 一、外贸人在阿里巴巴开店需要走哪些…

    2022-03-16
    00
  • Win10电脑玩红警卡顿怎么办?Win10玩红警卡顿的解决办法

    Win10电脑玩红警卡顿怎么办?Win10玩红警卡顿的解决办法 红警卡顿的原因 红警卡顿的解决方法 玩红警需要注意的事项 红警卡顿的原因 红警是一款比较老的游戏,可能在Win10电脑上会出现卡顿的现象。造成红警卡顿的原因主要有以下几点: Win10电脑的配置不够高,无法满足游戏的需求。 游戏本身存在一些bug,导致卡顿。 电脑中存在一些病毒或垃圾文件,导致系…

    2023-08-21
    00
  • MAC如何快速卸载软件

    MAC如何快速卸载软件 使用应用程序文件夹卸载软件 使用第三方软件卸载工具 使用应用程序文件夹卸载软件 MAC系统自带了应用程序文件夹,可以通过以下步骤来卸载软件: 打开应用程序文件夹 找到需要卸载的软件 将软件拖到废纸篓中 右键点击废纸篓,选择“清空废纸篓” 这样就可以将软件彻底卸载掉了。 使用第三方软件卸载工具 如果您不想手动卸载软件,也可以使用第三方软…

    2023-07-01
    00

联系我们

QQ:183718318

在线咨询: QQ交谈

邮件:183718318@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信