Flv.js

使用flv.js做直播

夙愿已清 提交于 2021-01-17 06:07:29
为什么要在这个时候探索flv.js做直播呢?原因在于各大浏览器厂商已经默认禁用Flash,之前常见的Flash直播方案需要用户同意使用Flash后才可以正常使用直播功能,这样的用户体验很致命。 在介绍flv.js之前先介绍下常见的直播协议以及给出我对它们的延迟与性能所做的测试得出的数据。 如果你看的很吃力可以先了解下音视频技术的一些 基础概念 。 常见直播协议 RTMP : 底层基于 TCP ,在浏览器端依赖Flash。 HTTP-FLV : 基于 HTTP 流式IO传输FLV,依赖浏览器支持播放FLV。 WebSocket-FLV : 基于 WebSocket 传输FLV,依赖浏览器支持播放FLV。 WebSocket 建立在 HTTP 之上,建立 WebSocket 连接前还要先建立 HTTP 连接。 HLS : Http Live Streaming,苹果提出基于 HTTP 的流媒体传输协议。 HTML5 可以直接打开播放。 RTP : 基于 UDP ,延迟1秒,浏览器不支持。 常见直播协议延迟与性能数据以下数据只做对比参考 传输协议 播放器 延迟 内存 CPU RTMP Flash 1s 430M 11% HTTP-FLV Video 1s 310M 4.4% HLS Video 20s 205M 3% 在支持浏览器的协议里,延迟排序是: RTMP = HTTP-FLV =

201902CentOS7_直播服务搭建_nginx_nginx-http-flv-module

北城余情 提交于 2021-01-11 03:34:17
1、介绍 nginx-http-flv-module是在nginx-rtmp-module基础上开发的一个直播模块。 感谢Arut创造了nginx-rtmp-module,它是Nginx的一个优秀的第三方模块,可以用来直播,支持RTMP,HLS和DASH方式直播,还支持调用第三方软件进行转码,录制视频等功能,由于依托Nginx,性能也比较高。但是美中不足的地方也不少,例如首屏时间长,不支持HTTP-FLV方式直播,不支持虚拟主机(vhost)功能,省略listen配置无法接受连接,有很多很明显的bug等问题。 nginx-http-flv-module解决了上述的问题。当然,还有些bug还有待修复。具体使用方法请参考说明文件: 为什么选择Nginx作为支持HTTP-FLV方式直播的服务器呢?因为Nginx的Web服务器功能对HTTP协议的支持非常完善,Nginx的性能优秀,经过了很多场景的检验。另外,Nginx本身对第三方软件的依赖较少,非常易于部署。这些都使得它成为HTTP-FLV方式直播服务器不可多得的选择。 1.1 nginx-http-flv-module的功能 兼容nginx-rtmp-module所有功能,基于 nginx-rtmp-module 的流媒体服务器。 支持HTTP-FLV方式的直播 支持GOP缓存,以减少首屏时间 支持虚拟主机功能

玩转前端 Video 播放器

你。 提交于 2020-08-12 15:44:29
Web 开发者们一直以来想在 Web 中使用音频和视频,但早些时候,传统的 Web 技术不能够在 Web 中嵌入音频和视频,所以一些像 Flash、Silverlight 的专利技术在处理这些内容上变得很受欢迎。 这些技术能够正常的工作,但是却有着一系列的问题,包括无法很好的支持 HTML/CSS 特性、安全问题,以及可行性问题。 幸运的是,当 HTML5 标准公布后,其中包含许多的新特性,包括 <video> 和 <audio> 标签,以及一些 JavaScript APIs 用于对其进行控制。随着通信技术和网络技术的不断发展,目前音视频已经成为大家生活中不可或缺的一部分。此外,伴随着 5G 技术的慢慢普及,实时音视频领域还会有更大的想象空间。 接下来本文将从八个方面入手,全方位带你一起探索前端 Video 播放器和主流的流媒体技术。阅读完本文后,你将了解以下内容: 为什么一些网页中的 Video 元素,其视频源地址是采用 Blob URL 的形式; 什么是 HTTP Range 请求及流媒体技术相关概念; 了解 HLS、DASH 的概念、自适应比特率流技术及流媒体加密技术; 了解 FLV 文件结构、flv.js 的功能特性与使用限制及内部的工作原理; 了解 MSE(Media Source Extensions)API 及相关的使用; 了解视频播放器的原理、多媒体封装格式及

html5 播放 rtsp

余生长醉 提交于 2020-08-09 08:47:16
目前大多数网络摄像头都是通过 RTSP 协议传输视频流的,但是 HTML 并不标准支持 RTSP 流。除了 Firefox 浏览器可以直接播放 RTSP 流之外,几乎没有其他浏览器可以直接播放 RTSP 流。Electron 应用是基于 Chromium 内核的,因此也不能直接播放 RTSP 流。 在借助一定工具的情况下,可以实现在 Web 页面上播放 RTSP 流。本文介绍的方法可以应用于传统 Web 应用和 Electron 应用中,唯一的区别是将 Electron 应用的主进程当作传统 Web 应用的服务器。 目前已有 RTSP 播放方案的对比 既然是做直播,就需要延迟较低。当摄像头掉线时,也应当有一定的事件提示。处于这两点,对目前已有的已经实现、无需购买许可证的 RTSP 播放方案进行对比(处于原理阶段的暂时不分析)。 基于 flv.js 的 RTSP 播放方案 flv.js 是 Bilibili 开源的一款 HTML5 浏览器。依赖于 Media Source Extension 进行视频播放,视频通过 HTTP-FLV 或 WebSocket-FLV 协议传输,视频格式需要为 FLV 格式。 服务器端(主进程) 服务器端采用 express + express-ws 框架进行编写,当有 HTTP 请求发送到指定的地址时,启动 ffmpeg 串流程序,直接将 RTSP

flv.js在vue项目的应用

喜欢而已 提交于 2020-02-28 01:32:08
环境准备 在index.html引入flv.js依赖 <script type='text/javascript' src="https://cdn.bootcss.com/flv.js/1.5.0/flv.js"></script> 数据准备好后播放视频 先取到接口数据,后播放。使用async await关键字实现顺序加载视频 伪代码 在 mounted 生命周期内渲染视频 async getData() { await api(this.param).then(res => { .... .... }); this.videoPlay(); }, 多路视频播放与销毁,切换地址 flv.js在播放前需要检查是否已创建实例,如果已有实例,则销毁,在重新创建播放器实例。 <video style="width:28vw;height:24vw;" id="videoElement" muted autoplay >{{unsupportedMsg}}</video> data() { return { unsupportedMsg:"您的浏览器不支持Video标签", flvPlayer: Object, flvPlayer2: Object, flvPlayer3: Object, flvPlayer4: Object, flvPlayer5: Object, flvPlayer6

flv.js在vue项目的应用

感情迁移 提交于 2020-02-28 01:24:53
环境准备 在index.html引入flv.js依赖 <script type='text/javascript' src="https://cdn.bootcss.com/flv.js/1.5.0/flv.js"></script> 数据准备好后播放视频 先取到接口数据,后播放。使用async await关键字实现顺序加载视频 伪代码 在 mounted 生命周期内渲染视频 async getData() { await api(this.param).then(res => { .... .... }); this.videoPlay(); }, 多路视频播放与销毁,切换地址 flv.js在播放前需要检查是否已创建实例,如果已有实例,则销毁,在重新创建播放器实例。 <video style="width:28vw;height:24vw;" id="videoElement" muted autoplay >{{unsupportedMsg}}</video> data() { return { unsupportedMsg:"您的浏览器不支持Video标签", flvPlayer: Object, flvPlayer2: Object, flvPlayer3: Object, flvPlayer4: Object, flvPlayer5: Object, flvPlayer6

DPlayer简单用法

谁说胖子不能爱 提交于 2019-12-19 01:43:51
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> DPlayer 是一个支持弹幕的 HTML5 视频播放器。支持 Bilibili 视频和 danmaku,实时视频(HTTP Live Streaming,M3U8格式)以及 FLV 格式。 用法 HTML <div id="player1" class="dplayer"></div> <!-- ... --> <script src="dist/DPlayer.min.js"></script> 选项 var dp = new DPlayer({ element: document.getElementById('player1'), // 可选,player元素 autoplay: false, // 可选,自动播放视频,不支持移动浏览器 theme: '#FADFA3', // 可选,主题颜色,默认: #b7daff loop: true, // 可选,循环播放音乐,默认:true lang: 'zh', // 可选,语言,`zh'用于中文,`en'用于英语,默认:Navigator language screenshot: true, // 可选,启用截图功能,默认值:false,注意:如果设置为 true,视频和视频截图必须启用跨域 hotkey: true, // 可选,绑定热键,包括左右键和空格

我的这半年 / 2018 七夕著

最后都变了- 提交于 2019-12-04 07:13:30
浑然不觉,竟已至七夕, 今年已经过了一半 , 突然想给自己记录点什么 , 回顾下我的2018, 我的这上半年. 2018的第一件记事得从一月份下旬的那场大雪说起 , 一觉醒来 , 窗外整个银装素裹 , 在此之前已经很多年没见过雪了 , 下雪意味着离春节假期又进了一步 . 离回家日子又近了一些 . 春节假期 距离春节还有三周的时候, 我得知需要有人值好最后一班岗 (提前一周就放春节假了), 除夕前一天才能回家 , 我便主动请缨值班, 抢了除夕前一天的票, 做好了除夕到家的准备. 但是计划安排总是用来被打乱的, 在放假的前的第三天 , 被通知不需要人值班了. 为了提前回家 , 便开启了各种抢票软件, 结果用了不到两个小时, 抢到隔天晚上的票 . 真的是运气好, 距离春节前一周抢到回家的票, 不然得和泡面过日子, 扛到除夕的前一天才能回去了 . 2月9号上火车, 10号抵达衡阳, 回到了阔别两年之久的家乡 . 开始一段半个月以放松为目地的"腐败而堕落"的日子. 除夕前夜, 14号情人节当晚 , 长瑞驱车 , 带着我以及文湘华 , 诗韵 , 以及这两个人的女儿 , 从衡山跑到南岳去看灯会 . 但期待有多大, 失望就有多大, 没去之前, 我以为是灯火满市井, 各种灯谜, 一幅好不热闹的场面 . 去了发现, 实地游客甚少, 颇显冷清, 令人倍感失望 ,

我的这半年 / 2018 七夕著

孤者浪人 提交于 2019-11-26 10:30:40
浑然不觉,竟已至七夕, 今年已经过了一半 , 突然想给自己记录点什么 , 回顾下我的2018, 我的这上半年. 2018的第一件记事得从一月份下旬的那场大雪说起 , 一觉醒来 , 窗外整个银装素裹 , 在此之前已经很多年没见过雪了 , 下雪意味着离春节假期又进了一步 . 离回家日子又近了一些 . 春节假期 距离春节还有三周的时候, 我得知需要有人值好最后一班岗 (提前一周就放春节假了), 除夕前一天才能回家 , 我便主动请缨值班, 抢了除夕前一天的票, 做好了除夕到家的准备. 但是计划安排总是用来被打乱的, 在放假的前的第三天 , 被通知不需要人值班了. 为了提前回家 , 便开启了各种抢票软件, 结果用了不到两个小时, 抢到隔天晚上的票 . 真的是运气好, 距离春节前一周抢到回家的票, 不然得和泡面过日子, 扛到除夕的前一天才能回去了 . 2月9号上火车, 10号抵达衡阳, 回到了阔别两年之久的家乡 . 开始一段半个月以放松为目地的"腐败而堕落"的日子. 除夕前夜, 14号情人节当晚 , 长瑞驱车 , 带着我以及文湘华 , 诗韵 , 以及这两个人的女儿 , 从衡山跑到南岳去看灯会 . 但期待有多大, 失望就有多大, 没去之前, 我以为是灯火满市井, 各种灯谜, 一幅好不热闹的场面 . 去了发现, 实地游客甚少, 颇显冷清, 令人倍感失望 ,