首页 文章 精选 留言 我的

精选列表

搜索[多媒体框架],共10008篇文章
优秀的个人博客,低调大师

electron-player —— 多媒体播放器

相关技术 electron:负责构建播放器的所需要的环境,提供访问系统资源的api(调用资源管理器,浏览器等等)以及打包成桌面应用程序 vue:负责构建播放器的界面 node:负责处理文件和路径问题,主要使用fs和path这2个模块 express:负责把视频读取出来,把视频以流的形式返回 html5相关技术:拖拽api,全屏api,Notification消息通知 DPlayer:音视频播放器核心组件 已实现功能 视频播放:目前已经支持大多数视频格式,比如 MP4、WebM、mkv、avi、WMV、FLV、rmvb 等,后续会添加更多的视频格式 音频播放:目前已经支持大多是音频格式,比如 MP3 等,后续会添加更多的音频格式 换肤功能:该功能类似其他软件的换肤功能,用户可以根据自己的喜好选择不同的主题皮肤 历史记录:音视频播放器会自动记录用户播放已经过的的视频或音频,比如音频或视频播放到那个时间 记忆功能:音视频播放器会自动保存用户的操作和修改的配置,比如用户更换了主题皮肤,用户关闭了应用后再次打开,音视频播放器会应用用户已经修改的主题皮肤。用户对视频或音频进行加速等操作都会被记忆下来,用户再次点击该视频或音频就会恢复用户的操作 播放模式:播放模式主要有5种,分别是 单个播放、单个循环、循环播放列表、顺序播放、随机播放 排序模式:排序模式主要有5种,分别是 默认排序、大小排序、时间排序、随机排序、名称排序 置顶功能:保持应用界面始终在最顶端 加减速功能:音视频加速或者减速播放 拖拽文件或文件夹:用户可以把文件或者文件夹拖拽进音视频播放器中,应用会过滤掉不能播放的文件 全屏功能:实现了应用的全屏功能,这里是使用了electron提供的全屏api,没有使用html5的全屏api 右键菜单功能:目前已经实现了大多数右键菜单的功能,没实现的后续实现 效果图 效果图1 效果图2 效果图3 效果图4 效果图5 效果图6 效果图7

优秀的个人博客,低调大师

冯迅:YY多媒体实时传输系统演进

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/82634974 本文来自YY基础架构部负责人冯迅在LiveVideoStackCon 2017上的分享,并由LiveVideoStack社区整理而成。冯迅重点介绍了,YY直播平台的架构演进,包括技术栈选择权衡,自建网络与采购CDN协作等。 文 / 冯迅 整理 / LiveVideoStack 大家好,我是冯迅,目前在欢聚时代(YY)主要负责音视频传输系统和音视频直播后端系统。今天想与大家分享的是YY的媒体实时传输系统与优化实践。YY是一家专注于打造专业直播平台与直播内容的互联网公司,业务主要涵盖了BGC、UGC与其背后的多样性玩法等领域。 本次分享内容主要分为以下几个方面: 1、实时可靠传输的重要性 2、不实时、不可靠的影响因素 3、直播传输网络架构演变 4、实时、可靠性优化 5、与CDN结合案例 1、实时可靠传输的重要性 想必大家都看过《新闻联播》,其中可以明显注意到的现象是直播间主播与现场记者连线交流时会出现不同程度的延迟;随着互联网技术的飞速发展,对于手机视频直播而言,消费者不再满足于单纯的直播视频观看,而是追求更多新鲜、有趣的玩法。包括YY一直在尝试的“欢乐篮球”或“陪你玩儿”、“一起玩儿”在内,随着直播场景的不断延伸,这些衍生直播玩法越来越强调互动性,其对网络实时传输的可靠性也提出了更高的要求。 2、不实时、不可靠的影响因素 对于实时性传输的探索,通常我们会关注以下三个关键指标:时延、丢包和时延抖动。由于所处网络环境的复杂多样,实时性传输受到不稳定网络干扰的可能性非常大,甚至于在某个时刻也许会出现连续丢包导致时延骤增,持续一两秒后恢复正常的现象;在生活中,Wi-Fi可以说是无处不在,但当我们在覆盖Wi-Fi的房间中走动或有强雷干扰时,Wi-Fi信号就会变得非常不稳定;除此之外,无论是在核心网还是接入网都需要面对的问题是:网络拥塞——由于链路的带宽或路由节点的性能无法满足要求导致的网络拥塞会逐渐增大RDT的时延,最终导致丢包。在YY的实际运营中我们经常会发现,即使某两个机房之间的传输质量很好,但在某两个服务器或某些IP段间却会出现不定时的丢包。其实这并不代表两个机房间的传输质量变差或者带宽下降,而是由于运营商或中间的路由结点施行的一些如防火墙或流控等策略,这些策略会将部分重要的数据包随机丢掉。这种随机性丢包对业务逻辑处理造成的影响主要体现在有效媒体流的接收延时增大,而时延的不确定增长与缩短的情况如果经常出现,就可将其称为时延抖动。 上图展示的是YY网络的传输架构图。我们可以看到,从客户端APP通过有线与无线网络选择就近的运营商,之后接入到YY的分发系统再到最终的观众端,整体的网络路径比较长并且在包括无线链路、运营商接入节点等核心骨干网的整条路径任何地方都有可能出现丢包。面对更加复杂的广域网环境,我们该如何解决这种不实时性和不可靠性?我认为从端到端的思想出发,不能完全依赖某个算法或重传机制,而是需要一个系统性的解决方法。 3、直播传输网络架构演变 3.1 演进前 首先,了解一下YY传输网络的演变过程。最初YY的核心网是基于广域网自建的一层虚拟网络,其中包括对A端到B端的可行路由进行探测的智能路由探测系统。数据从主播端接入的边缘节点,传递到中间的转发节点再到观众端的边缘节点,这整个过程需要考虑两个关键点:1、边缘节点对包括主播和观众在内所有用户的处理策略是相同的,并不存在任何的区别。2、在业务逻辑上系统认为观众和主播的用户属性是相同的,因而在传输上也有一套统一的传输策略与机制。得益于我们在其中进行的许多优化,这套系统直到一两年前也能稳定运行。当然随着2016年直播行业的火热,直播被赋予了更多创新玩法,特别是像刚刚说的欢乐斗、欢乐篮球等,都是以一个互动性非常强的业务场景为基础。如果不升级传输网络,那么就意味着能够承载这种强互动直播的网络,其复杂性会非常之高,现有网络已无法从容应对直播消费升级与用户对直播产品的需求。结合由产品痛点作出的必要分析,我们对传输网络的架构进行了演进与升级。 3.2 演进后 上图为演进后的YY传输网络架构图,主要由主播分发网络、观众分发网络、内容云处理三部分组成。我们可以根据上行流判断谁是主播,并将包括主播间互动在内的所有活动都集中于主播分发系统,而观众则是一个纯粹的观看视角;即使有与主播互动的需求,观众端对时延性的要求也并不苛刻,因此数据可通过内容云进行一些必要处理,然后再分发给观众。从这里我们可以看出,演进后的网络架构相对于演进前,更加简洁清晰。 这里需要强调的是主播系统与观众系统的差别: 对于主播系统而言,从业务逻辑上来说,如果是针对类似于视频会议的直播需求,我们的方案是将所有支撑功能的组件集中在主播分发系统当中,使其仅专注解决传输问题,不需要在关键组件上进行调整即可应对多种直播情景;从传输层面上来看,主播对互动性的要求很高,那么在传输策略上,不仅需要保证传输流的质量符合要求,更需要控制时延在一个可以接受的范围中。 对于观众而言,如果观看的视频画面出现了几百毫秒至一秒的延时,观众感知到的体验折扣会小于主播感知到的。因为观众观看直播只是单向的数据传输,对于时延的要求相对于主播系统而言更加宽松,因此在传输策略上观众端与主播端存在一定差别,观众更需要的是,在保证视频播放基本流畅的前提下音频与画面是否清晰等等。 4、实时、可靠优化 YY在实时、可靠优化上的工作主要有以下四个方面: 接入选择 传输策略 多路聚合 网络加速 4.1 接入选择 YY在后台有一套庞大的数据统计系统,对从用户数据接入到最终输出质量的整体传输过程进行统计与评价。 例如北京的用户接入北京的服务器往往会比接到广州效果更高,我们根据一系列统计数据判断用户每一种接入方式的质量并择优分配;即使我们会对用户优先采用就近接入的方式,但当出现类似于覆盖能力较弱的小型运营商未接入某地或接入质量不佳的情况,我们也会考虑让用户从异地接入;除此之外,针对就近接入的服务器出现故障进而影响服务稳定的情况,除了就近接入策略,我们也会在一个分区中为用户分配多个接入节点并提供一种自动链路质量勘测的监测机制,在用户端判断多个接入点的质量并进行动态选择;除了以上优化,为用户分配链路节点时我们也会参考大数据库,例如同一个区域的用户在某个时间段集中选择哪种接入方式,根据大数据反映的结果随时调整分配策略,在充分考虑接入点选择性的前提下尽可能优化接入效果。 4.2 传输策略 1)ARQ&FEC&带宽估计三者结合 传输上的优化主要是前向纠错(FEC)与后向纠错也就是重传(ARQ)。前向纠错类似于我们常用的FEC在控制时延上占有一定优势,而重传(ARQ)应该属于后向纠错的一种,本身意味着加大时延。在实际应用中我们会结合自己的一些要求采取不同的传输策略,但仅有这两种策略还远远不够,有时出现丢包意味着数据量超过了带宽的最大限制,而一味地重传会明显增大带宽压力使得链路环境变得更差,单纯地使用ARQ或FEC都是不可取的,正确的方案是在结合二者时根据对带宽的预估结果确定比重从而避免不断改变传输策略令网络环境持续恶化。在实际实践中时我们需要根据业务属性、音视频流量、音频冗余情况等作出最优调整。随着对音视频信息量的要求越来越高,视频的码率也会越来越大,我们会通过一些编码技术上的优化在保证视频清晰度的前提下降低码率,从而在提升传输效果与用户体验的同时控制成本。 2)码率自适应 使用带宽估计算法估计网络两端的带宽范围,再根据估计值指导后续视频码率的调整,保证发送的流量不会超过带宽,尽可能避免丢包和拥塞的发生。有时即使降低带宽也无法完全避免丢包的发生,或是在调整码率时需要考虑是否进行重传与冗余处理等,我们应该预留出足够的数据空间,从而在发生特殊情况时能够从容应对。 4.3 多路聚合 1)接入侧聚合 接下来我将详细介绍多路聚合过程。多路聚合主要用于接入端与核心网之间。有时大家会看到一些在山区或洞穴等无法获得传统有线或无线网络的环境中进行的直播,我们该如何应对这种苛刻的直播环境?在主播端我们集成了一套可提供多路无线接入功能的聚合YY MiFi方案,提供Wi-Fi与以太网两种接入接口。整套系统的原理类似于一个IP层下的多路UDP隧道,当一个TCP连接时,系统可通过多条不同网络传输路径提升带宽,当某个时间段出现传输质量不佳的情况时,可以在多个传输网络间实时切换保证传输稳定,数据传输至聚合网关后再被提取出TCP的原始内容。我们知道平时手机连接Wi-Fi时看到的IP是Wi-FI分配的内网IP,数据传输至运营商则使用公网IP,而聚合网关在数据的两个方向上分别使用SNAT/DNAT进行不同IP转换.。从客户端发出若干个数据包,这些数据包的传输并不只是在一个通道上,而是根据不同通道质量好坏遵循多路选择的策略,这套策略基于我们自主研发的一套算法构建,目前在申请该算法专利。经过实践检验我们发现,采取上述措施可大大提高从主播或观众到接入服务器之间数据传输的质量。 2)智能分发网络 同样,在智能分发网络上我们也实现了多路路由机制。之前我提到YY在广域网的基础之上自建了一层虚拟网络也就是我们平时说的Overlay,这套网络的连接架构图基于我们自主研发的一套由智能路由监控系统。在接入节点侧我们有一套选路算法用于核心网不同节点之间的数据传输,假设我们为北京联通到广州电信两个节点之间分配多条网络路径,那么数据传输时系统可能会择优选择一条链路传输数据,另外几条则不传输或仅传输部分数据,也有很多人问为什么不多条路径一起传输冗余数据更能保证质量?多路径同时传输存在以下两点问题:第一是随着数据流的增多,节点的性能压力会大大增加,性能压力迫使服务器的数量上升,继而节点的分散程度就会增大,节点分散程度增大带来的直接影响便是流量的加大,假设以前需要2个节点那么现在则需要增加到4个才可满足数据传输要求,当然,多路传输时,数据乱序导致的节点处理和延迟也需要考虑;第二是我们希望实现的是在保证传输质量不变的情况下尽可能降低传输成本,而在直播当中最昂贵的便是流量,流量增加一倍意味着成本的大幅提高。在智能分发网络里面,当面对类似于横跨小运营商的情况,为其选择一条质量比较高的链路即可解决不同运营商之间的跨网质量问题。 4.4 网络加速 1)TCP加速 首先介绍的是网络加速里的TCP加速,想必大家不会对TCP加速感到陌生。我们从2015年开始探索TCP加速,因为类似于RTMP、HLS、FLV等都是基于TCP协议;由于TCP协议本身的一些拥塞算法,在网络环境不佳时其对网络的退让策略比较急进,这让我们不得不寻找合适的解决方案。想要实现非常通用的TCP加速则需采用单向加速,双向加速意味着对端的修改,这在TCP还未被人们所熟知的2015年是不现实并且难度较大的。基于当时的背景我们始终致力于TCP单向加速,主要运用在主播到分发网之间、边缘节点到观众之间、核心网之间以及各个机房之间的加速。特别是在应对首屏秒开的情况,拉取上一个GOP数据流时,我们会通过使用TCP加速算法对下行FLV或RTMP进行加速。YY基于Linux开发了上述一系列配套组件,我们知道在开发TCP加速时要么与Google BBR相似,通过直接修改内核TCP协议机制代码,从而实现TCP加速,要么就是在不修改内核的情况下通过拥塞算法结合其他思路实现类似功能。对YY来说,修改内核涉及到的风险非常大,因而我们主要考虑的还是在内核模块中集成拥塞算法等优化来实现TCP加速的效果,实践的结果可以说符合大家的期待与需求。 2)报文发送加速 接下来介绍的网络加速是报文发送加速。因为网络直播本身是一个多窝的系统,这就意味着主播上传的数据可能会发给成千上万用户,甚至发到某一端的一千、两千个甚至更多的海量节点。报文发送加速是一种常规的加速手段,如果通过UDP传统的socket方式将数据发送给一千人就需要调用系统至少上千次,每调用一次就意味着用户态至内核态的切换。即使相对于TCP协议而言UDP协议的性能较高,但整个过程对性能的消耗依旧非常大。通过实验我们发现,如果不经过加速就通过一个节点将数据转发给几百个用户,那么CPU将会严重超负荷运转。我们该如何实现加速呢?首先需要做的是将内核态和用户态通过内存共享方式打通,把数据包直接送至内核态中并随之进行一次的系统调用,而此数据包在发给多端的过程中其内容是不改变的,改变的只是接收者。系统在把数据包送至内核态后,由内核进行多路转发即可迅速成倍地提升性能。这里是以发送加速为例,而发生丢包或是网络拥塞除了链路带宽以外还有一个很重要的因素就是中间节点的吞吐量性能处理,吞吐量也是决定一条链路带宽能否提升的一个重要原因。 5、与CDN结合案例 大家可能会有一种感觉:YY的传输网络都是自己搭建的,为什么不直接使用CDN呢?我们希望实现的是与CDN的深度融合,首先在布点方面,我们会考虑在部分边远地区或国外等布点成本比较高而CDN的覆盖比较好的地区结合CDN解决一系列问题;其次在面对小运营商时,如果小运营商的问题可以用CDN妥善解决那么我们也会采用;第三是我们会根据不同地区的CDN质量对布网策略进行适当调整,如果某个区域CDN的质量具备明显优势,可以选择让其在质量上与我们布网形成互补,最终呈现给用户满意的体验。 我们期待通过YY在传输网络上的诸多改进与创新满足互联网直播的业务需求,为用户带来非凡的直播观看体验。 Q&A Q1:MIFI多路聚合部分在IP层下实现的TCP加速具体是指什么? A:具体是指MiFi将整个TCP层封装到IP层之上,MiFi决定使用运营商的哪条链路发送数据至聚合网关, 通过多条传输路径选择提升TCP速度,这里用到了“隧道”的技术。 Q2:在传输协议的选择上是UDP还是TCP或是二者都有? A:刚才没有提到的是,我们的整个传输网络主要是基于UDP协议,TCP主要用于首屏秒开等需要快速拉取一定量数据的情景。例如当我们需要快速拉取视频数据时可能刚好取到的是GOP帧中间的数据导致无法正常播放,这时往往需要获取一个完整的GOP帧。最开始的这部分数据我们使用TCP进行快速拉取,后面整体依然采用的是UDP协议处理;另外TCP加速也可用于用户使用FLV或RTMP观看的单边直播或主播使用RTMP推流的直播,都可以达到不错的加速效果。 Q3:在网络加速部分是否考虑修改Linux内核? A:不会,通信行业在2010年左右提到一个用户态驱动的方案,也就是打通用户态和内核态直接通信方式,把数据包直接丢进内核,需要做的只是在内核中添加一个模块而无需修改内核。修改内核意味着我们自己需要承担内核变动背后的风险,这并不符合目前的要求。

优秀的个人博客,低调大师

CCtalk高可用多媒体服务技术选型与实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/81124938 本文来自沪江技术中心开发经理杨福强在LiveVideoStackCon 2017上的分享,并由LiveVideoStack整理而成。杨福强于2012年加入沪江,主要从事教学互动平台CCtalk的开发,今天他将为我们分享高品质教学平台的一些技术难点和解决方案。 文 / 杨福强 整理 / LiveVideoStack 关于CCtalk CCtalk是沪江旗下的支持互动教育平台,它提供网师服务,支持老师签约入驻,拥有基于云,大数据和AI的个性化课程推荐,同时也支持社群化学习,可以通过课前预习,课后答疑和视频回放等来沉淀学习用户,而且还有非常丰富的教学工具,包括实时多向音视频服务,双向白板,屏幕分享,讲义,教学小工具等等。 今天我会从五个方面来给大家介绍: 1,主流直播方案介绍 2,客户端AV引擎 3,服务端架构演进 4,录制回顾以及旁路推流 5,高并发场景案例分析 1、主流直播方案 主流的直播方案,我把它分为四类:RTMP,HTTP-FLV,HLS和RTP 下面介绍一下各自的特点: 1)RTMP RTMP的优点是CDN加速成熟,成本低,可用的开源库,以及开源工具比较多,延迟一般在2到5秒。 2)HTTP-FLV HTTP-FLV的原理是服务器在响应HTTP请求时候,不返回Content-length字段,它使用HTTP协议来实现,不容易被防火墙拦截,延迟略低于RTMP,但都是秒级的。 3)HLS HLS的优点是CDN分发容易,成本低,可以在HTML5页面中直接打开观看,但它延迟一般大于12秒。 4)RTP RTP一般是各家自研,相比于传统的直播方案来讲,自研方案不支持CDN加速,且成本贵,延迟一般是200到800毫秒之间。 2、客户端AV引擎 教育直播-CCtalk是基于RTP协议自主研发的,它的传输层支持UDP和TCP两种方式,支持网师之间以及任意观众之间的连麦互动,连麦延迟和观众延迟都是毫秒级的,同时它支持PPT,白板笔,答题卡,文字等多种不同形式的教学互动。下面介绍CCtalk的软件架构图: 从图中可以看到,所有的客户端与信令系统之间有一个TCP长连接,来实现PPT、白板笔、答题卡、文字聊天等等教学相关的小工具;所有的用户与媒体服务之间有一路TCP或UDP的连接,实现老师与学生之间的双向实时音视频互动,比如说老师上课的时候,将产生的实时音视频数据发送到媒体系统,媒体系统按照一定的路径将媒体数据发送到学生端;如果学生端也上麦了,那么学生端产生的音视频数据也会经过媒体系统转发到老师端,这样就完成了一个教学场景下的双向音视频互动。同时,媒体服务会旁路推流一路RTMP到CDN,学生端可以在HTML5网页里直接观看实时单向直播,这样就满足了在大型直播中网页传播的诉求。另外媒体服务器会将上课时产生的音视频数据发送一路到录制服务,同时信令系统会将上课时产生的PPT、白板笔以及文字聊天等内容发送一份到录制服务,录制服务收到所有上课内容后,将它们以元素的形式存储下来,存储下来的这个格式叫做OCS回顾,便于课后回顾。 因此教育直播架构须具有的以下特性才能满足需求: 而CCtalk就是这么一个支持多种教学工具的实时大规模并发教学平台。在最开始实现这个平台的时候,我们采用了一些开源方案,如webrtc,但后来发现直接使用开源方案无法为完全满足教育直播的需求,因此我们自研发了一套客户端AV引擎: 下面我会针对引擎的网络部分做一个简单的介绍,主要介绍用到的几个关键的技术。首先思考一个问题:当客户端在使用媒体引擎的服务时,需要做的第一件事是什么呢? 答:需要找一个网络质量较高的边缘节点接入。 如上图所示,假如我们有一百个边缘节点,用户需要从这一百个里面选一个到他的网络质量较高,那么该如何选择呢?可能你首先想到的是DNS解析,但其实只靠DNS解析是不够的,我们还需要一套自动寻路机制,如下图所示: 以小网络为例,它的每次DNS解析的结果可能是变化的,我们无法保证它寻到的结果一定是最优的。当用户接入到边缘节点之后,在使用过程中,用户的网络在不断变化的,因此我们还需要有一个动态检测的机制,如果引擎检测到网络波动较大的情况,那么需要再次启动自动寻路机制,再给它找一个网络质量较高的边缘节点接入。此外,由于网络一直在变化,为了适应这种不断变化的网络,我们还需要一套拥塞控制机制,在这里我推荐Google的GCC拥塞控制算法: 这个拥塞控制可以分为发送端基于丢包的网络估计,以及接收端基于延迟的网络估计两部分,总结下来,就是根据丢包率以及延迟控制发送端的码率。除此之外,当我们的码率开始降低的时候,是不能一直降低下去的,因为码率降低意味着音视频质量的下降。我们还需要另外一套补充机制,叫做消峰处理: 消峰处理的原理是将比较大的数据分成若干个包,在一定时间内发送出去。但这会带来延时的增大,因此需要控制发包的间隔大小。最后,当数据在传输当中由于误码等因素导致丢包时,我们还需要丢包重传的机制来进一步的提升网络的质量。总结下来,其实整个客户端引擎的网络部分,其实就是在做一件事:在实时性与质量之间权衡,而且这个权衡具有一定的自适应能力。 3、服务端架构演进 这张图的上半部分在前面已经介绍过了,就是客户端的引擎部分,下半部分是对应的媒体服务器的一些功能。最初的CCtalk服务系统是由第三方提供的,开发简单,成本低,但确实存在一些问题。后来我们自主研发了一套服务端体系,架构如下: 这个架构分为两大部分:信令系统和媒体系统,整个架构中的所有服务设计功能单一、结构简单,并且所有节点支持线性扩展,理论上它能承载的人数是没有上限的,你只要加机器就可以了,所有的节点支持失效自动转移,这套系统我们用了很长一段时间,但在使用的过程中还是发现了一些问题,以媒体系统为例,首先一个是问题是存在中心节点,这就意味着所有的数据都要先经过代理节点转发到中心节点,再发送到代理节点,最后发送到学生端,并且这个路径是固定的,所有的数据都要走这么长的路径,此外,系统之间有一定的耦合。为了解决这些问题,重新设计了新的媒体架构: 首先,我们把信令系统与媒体系统之间解耦,也就是说他们之间相关的操作如加入房间,建立房间,全部放在客户端的AV引擎去实现;另外,我们去掉了中心节点,加入了转发节点的概念,所有的转发节点都是对等的,并且转发节点会将收到的音视频数据通过一个智能寻路算法自动找一条最优的路径。 整个媒体系统设计原则有两点:一是尽最大的可能找一条最优的路径,将数据尽快的发送到对端;二是在服务出现问题的时候,尽量的保证服务的可用性,并且让用户没有感知。 4、录制回顾以及旁路推流 下面讲一下录制回顾以及旁路推流,架构如下: 具体如下,当 Server收到指令以及数据时,会将音视频数据发送到服务端的音视频引擎,服务端的音视频引擎会对这些数据做一些处理,压缩成一个大视频,将大视频存成MP4,并保存到云端,同时,将这个实时的视频流以RTMP的形式推到CDN,这样,HTML5页面就可以在线观看实时的网页直播;同时媒体录制服务器会将上课时产生的所有内容以元素集合的形式存储一份,我们把这个存储格式叫做OCS。下面就是直播或录播的流程图: 录制OCS回顾视频过程如下: 我们还有一套专门的OCS编辑器来帮助对OCS回顾进行二次编辑,编辑器可以将编辑之后的结果再次传到云端,这样学生就可以观看编辑之后的内容。 在这个过程中,我们使用的转码服务,前期用户量不大的情况下,我们使用CPU转码,单台16核的机器的并发数量可以达到40路,后面随着业务增长,对于转码集群的要求不断增大,所以我们改用了GPU转码,并发情况如下: 5、高并发场景案例分析 高并发场景的案例分析,这一部分与实际的音视频没有太大的关系,但却存在教育场景当中不得不面对的一些问题,我首先举个例子,希望能够对大家有一定的启发。我们来想一个问题:同一个教室里,有20万人同时在听课,我们会遇到哪些问题,我们该如何解决这些问题?假设有20万人在同一个房间,每个人携带的数据量是30字节(例如:用户列表、用户ID、昵称等等),假设每台网关承载三千人,那么至少需要66台网关,正常情况下,假设每秒有800人进出房间,那么负载到每个网关上就是12人每秒的瞬间吞吐,所以算下来当有一个用户进房间,那么他拉取的这个数据量就是45Mb,他进房间的这一瞬间需要拉这么多的数据,每台网关承载的实时的吞吐量是554Mb,当出现异常时,比如说某台网关宕机或者脱离了核心服务,我们的负载均衡服务会将出现的问题的至少三千人负载到剩余的64台服务上,此时的网关负载增量是46.8人,异常时的网关瞬间流量是2Gb。总结下来存在的问题如下: 1)客户端带宽消耗太大 2)进入教室慢 3)服务并发处理量太大 那么,我们的应对策略是: 1) 精简信息+详细信息 2) 提供数据的版本机制,在一定范围内,只处理变化的数据。

优秀的个人博客,低调大师

Ampache 5.5.4 发布,多媒体应用与文件管理器

Ampache 是一款安装在服务端的、提供音乐管理、播放、更新服务的软件。用户可以通过网络使用该软件提供的各种功能。Ampache 还允许多帐户管理、保存播放列表和共享列表等,是一个优秀的在线音乐服务解决方案。 Ampache 5.5.4 是一个小版本发布,主要进行了一些修复。具体更新内容如下: 数据库 550005 将 song_artist 和 album_artist 地图添加到 catalog_map 改变 根据目录操作更新目录映射表 在 webplayer 中强制 b 和 n 按键为返回和下一个 修复 全新安装时缺少数据库表 不在 album_artist 浏览时过滤 song_artist 不要在没有有效用户的情况下使用 catalog_filter 和 rating_filter 标签更新时上传/手动专辑艺术家地图 从 catalog_map 中删除没有该目录的歌曲或专辑的艺术家 为调用 play_url 的歌曲设置正确的转码比特率和 mime 查看所有项目时保存跟踪订单 使用 cache_target 进行缓存歌曲清理(硬编码为 mp3) 搜索 用于艺术家目录搜索的 SQL 确保保存的规则与加载时的正确名称匹配 命令行界面 连接失败时不尝试更新数据库 API 5.5.4 修复 Api::ping 和 Api::handshake 中的用户数翻倍 Api3::stats 方法的参数不正确 确保为歌曲对象设置输出比特率和 mime 带有不良字符的 RSS Feed 生成 不向每首歌曲的艺术家描述发送垃圾邮件 更新公告:https://github.com/ampache/ampache/releases/tag/5.5.4

优秀的个人博客,低调大师

Ampache 5.5.3 发布,多媒体应用与文件管理器

Ampache 是一款安装在服务端的、提供音乐管理、播放、更新服务的软件。用户可以通过网络使用该软件提供的各种功能。Ampache 还允许多帐户管理、保存播放列表和共享列表等,是一个优秀的在线音乐服务解决方案。 Ampache 5.5.3 是一个小版本发布,主要进行了一些修复。具体更新内容如下: Changed 更新 footer.inc.php 中的copyright year Localplay status 和 instance_fields function 清理 更新一些 docker 文件以匹配当前images 允许将 streams 添加到播放列表(包括右栏) webplayer 另一个 code rework,删除旧的“original”列表 Shuffle 是一个 action 而不是播放列表的状态 Fixed Hidden Genres 不应该有一个catalog 使用某些参数的 Streaming 无法识别会话/用户 应该在统计数据中计算播客对象 wanted pages 上的Null artist->id Search Album 'other_user' 最爱搜索 SubSonic 如果你在使用 get_user_data 时没有数据,则会出错 Response data 可能会退回到 mp3 并且与输出格式不匹配 webplayer 重新排序列表可能会丢失项目的跟踪 从列表中删除单个项目可能会创建一个奇怪的列表 完成播放后删除最终曲目(如果你已设置该选项) 更新说明:https://github.com/ampache/ampache/releases/tag/5.5.3

优秀的个人博客,低调大师

Ampache 4.4.3 发布,多媒体应用与文件管理器

Ampache 是一款安装在服务端的、提供音乐管理、播放、更新服务的软件。用户可以通过网络使用该软件提供的各种功能。Ampache 还允许多帐户管理、保存播放列表和共享列表等,是一个优秀的在线音乐服务解决方案。 Ampache 4.4.3 已发布,更新内容如下: 新增: Catalog::update_counts 来管理目录变化; 从你的标签中收集更多的艺术文件; 允许 RatingMatch 插件对 ”专辑->艺术家“ 进行评级(原来是歌曲->专辑->艺术家); 改变: 在转码时计算 MP3 流的长度以避免提前切断它; 删除: 当专辑艺术家不明显时不要应用它 修复: CVE-2021-32644 识别一个独特的 album_artist 查询; 搜索文件标签时不要返回重复的艺术作品; random::advanced_sql 中的 SQL 查询有歧义; 过滤随机和搜索页面类型元素; 现在播放的统计数据在不需要的时候会被覆盖掉; SubSonic: getNowPlaying 无法返回正在播放的媒体或正确的时间; createShare 不能正确设置 object_id,并且忽略了 expires 值; 更多详情可查看:https://github.com/ampache/ampache/releases/tag/4.4.3

优秀的个人博客,低调大师

VLC 3.0.11 发布,跨平台多媒体播放器

VLC 3.0.11 已发布,此版本改进了 HLS 播放和 AAC 播放,可寻找特定的 m4a 文件,还解决了 macOS 上暂停播放时的音频渲染回归错误。此外还修复了一个安全问题。 修复 HLS 回归错误 修复在 macOS 上启动时可能出现的崩溃问题 修复m4a 文件中查找不明确的问题 修复 Android 出现的重采样问题 修复在 macOS 上列出蓝光挂载点时出现的崩溃问题 避免在 macOS 上出现不必要的权限警告 修复 macOS 上暂停播放后永久静音的问题 修复 AAC 回归错误 以及安全问题的修复 详情查看http://www.videolan.org/vlc/releases/3.0.11.html

优秀的个人博客,低调大师

VLC 3.0.10 发布,跨平台多媒体播放器

VLC 3.0.10 已发布,此版本改进了对 DVD、macOS Catalina、自适应流媒体、SMB 和 AV1 格式的支持,并修复了一些严重的安全问题。 针对 DVD 的多项修复和改进 更好的自适应流媒体支持 修复 macOS 上视频渲染的问题 对 MP4 的各种改进 对 macOS Catalina 更好的支持 增加对 SMB2/3 共享的支持 修复安全问题,尤其是 microDNS 服务发现中的各种 DOS 问题 …… 详情查看更新日志 下载地址:http://www.videolan.org/vlc/releases/3.0.10.html

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册