flv.js解析与使用

12 篇文章 0 订阅
1 篇文章 0 订阅

简介
Flv.js 是 HTML5 Flash 视频(FLV)播放器,纯原生 JavaScript 开发,没有用到 Flash。由 bilibili 网站开源。它的工作原理是将 FLV 文件流转码复用成 ISO BMFF(MP4 碎片)片段,然后通过 Media Source Extensions 将 MP4 片段喂进浏览器。
Github地址:https://github.com/Bilibili/flv.js/
flv.js demo地址:http://bilibili.github.io/flv.js/demo/
flv.js 文档:https://github.com/bilibili/flv.js/tree/master/docs

特征

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

媒体数据源
在这里插入图片描述

媒体部分
在这里插入图片描述

配置
在这里插入图片描述

flv.js常用方法
1:flvjs.isSupported():判断当前浏览器是否支持播放
2:flvPlayer = flvjs.createPlayer(mediaDataSource: MediaDataSource, config?: Config):创建一个播放实例
3:flvPlayer.attachMediaElement(mediaElement: HTMLMediaElement):将播放实例注册到video节点
4:flvPlayer.load():加载数据流
5:flvPlayer.play():播放数据流
6:flvPlayer.pause():暂停播放数据流
7:flvPlayer.unload():取消数据流加载
8:flvPlayer.detachMediaElement():将播放实例从节点中取出
9:flvPlayer.destroy():销毁播放实例

flv.js简单使用
1:html

<video id="my-player" preload="auto" muted autoplay type="rtmp/flv">
    <source src="">
</video>

2:js
(1):在index.xml文件中引入flv.js

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

(2):使用flv.js实现播放flv格式流,获取video节点

videoElement = document.getElementById('my-player');
if (flvjs.isSupported()) {
    flvPlayer = flvjs.createPlayer({
        type: 'flv',					//媒体类型
        url: 'XXXX'						//flv格式媒体URL
        isLive: true,					//数据源是否为直播流
        hasAudio: false,				//数据源是否包含有音频
	    hasVideo: true,					//数据源是否包含有视频
	    enableStashBuffer: false		//是否启用缓存区
    },{
        enableWorker: false, 			//不启用分离线程
        enableStashBuffer: false, 		//关闭IO隐藏缓冲区
        autoCleanupSourceBuffer: true 	//自动清除缓存
    });
    flvPlayer.attachMediaElement(videoElement);	//将播放实例注册到节点
    flvPlayer.load(); 					//加载数据流
    flvPlayer.play();					//播放数据流
}

(3):关闭视频流

flvPlayer.pause();						//暂停播放数据流							
flvPlayer.unload();						//取消数据流加载
flvPlayer.detachMediaElement();			//将播放实例从节点中取出
flvPlayer.destroy();					//销毁播放实例
  • 8
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要解决FLV.js解析FLV视频报跨域问题,可以采取以下几种常见的方法。 首先,可以在服务器端进行跨域解决,通过设置合适的响应头信息来允许跨域访问。例如,可以在服务器端设置Access-Control-Allow-Origin头,允许特定域名或所有域名进行跨域访问。这样,前端页面在请求FLV视频资源时,服务器会返回合适的响应头信息,从而解决跨域问题。 其次,可以利用代理服务器进行跨域请求。前端页面将FLV视频请求发送给代理服务器,代理服务器再转发请求给实际的视频资源服务器,然后将响应返回给前端页面。由于代理服务器和视频资源服务器在同一域,因此不存在跨域问题。 另外,还可以通过JSONP进行跨域请求。JSONP利用<script>标签的跨域能力,可以跨域加载远程资源。具体操作是,在前端页面动态创建一个<script>标签,src属性指向FLV视频资源的URL,然后定义一个全局函数来处理响应数据。服务器返回的响应数据需要包裹在该函数中作为参数进行返回。这样,前端页面就可以通过JSONP进行跨域请求并解析FLV视频。 还可以使用Nginx等反向代理服务器进行跨域解决。在Nginx配置文件中添加相关配置,设置合适的跨域规则。具体可参考Nginx的相关文档和配置示例。 综上所述,解决FLV.js解析FLV视频跨域问题的方法包括设置合适的响应头信息、利用代理服务器、使用JSONP和使用反向代理服务器等。根据具体情况选择合适的方法来解决跨域问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佳佳鸽

若文章帮到你,能不能请我喝杯茶

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值