移动端直播那点事

作者: 秒赞不是偶然 | 来源:发表于2016-03-07 18:50 被阅读2276次

最近研究模仿战旗直播的app ,今天把视频源弄到了 可以和正常线app一样看视频了。

首先介绍一下 HTTP Live Streaming (HLS) ,给现在正常做视频直播的朋友提供一下参考。

常用的流媒体协议主要有 HTTP 渐进下载和基于 RTSP/RTP 的实时流媒体协议,这二种基本是完全不同的东西,目前比较方便又好用的是用 HTTP 渐进下载方法。在这个中 apple 公司的 HTTP Live Streaming 是这个方面的代表。它最初是苹果公司针对iPhone、iPod、iTouch和iPad等移动设备而开发的流.现在见到在桌面也有很多应用了,HTML5 是直接支持这个。

但是HLS协议的小切片方式会生成大量的文件,存储或处理这些文件会造成大量资源浪费。如果要实现数天的时移,索引量将会是个巨额数字,并明显影响请求速度。因此,HLS协议对存储I/O要求相当苛刻。对此,也有公司提出了非常好的解决方案。

新型点播服务器系统,独创了内存缓存数据实时切片技术,颠覆了这种传统实现方法,从根本上解决了大量切片的碎片问题,使得单台服务器的切片与打包能力不再是瓶颈。其基本原理如下:

不将TS切片文件存到磁盘,而是存在内存当中,这种技术使得服务器的磁盘上面不再会有“数以吨计”的文件碎片,极大减少了磁盘的I/O次数,延长了服务器磁盘的使用寿命,极大提高了服务器运行的稳定性。同时,由于使用这种技术,使得终端请求数据时直接从服务器的内存中获取,极大提高了对终端数据请求的反应速度,优化了视频观看体验。

根据以上的了解要实现HTTP Live Streaming直播,需要研究并实现以下技术关键点

采集视频源和音频源的数据

对原始数据进行H264编码和AAC编码

视频和音频数据封装为MPEG-TS包

HLS分段生成策略及m3u8索引文件

HTTP传输协议

1. 分段策略

HLS的分段策略,基本上推荐是10秒一个分片,当然,具体时间还要根据分好后的分片的实际时长做标注

通常来说,为了缓存等方面的原因,在索引文件中会保留最新的三个分片地址,以类似“滑动窗口”的形式,进行更新。

2. m3u8文件简介

m3u8,是HTTP Live Streaming直播的索引文件。m3u8基本上可以认为就是.m3u格式文件,区别在于,m3u8文件使用UTF-8字符编码。

客户端部分

客户端开始时回去抓取 索引文件(.m3u8/.m3u),其中用URL来标记不同的流。索引文件可以指定可用媒体文件的位置,解密的密钥,以及任何可以切换的流。对于选中的流,客户端会有序的下载每一个可获得的文件。每一个文件都包含流中的连环碎片。一旦下载到足够量的数据,客户端会开始向用户展示重新装配好的媒体资源。

客户端负责抓取任何解密密钥,认证或者展示一个用于认证的界面,之后再解密需要的文件。

这个过程会一直持续知道出现 结束标记#EXT-X-ENDLIST。如果结束标记不出现,该索引就是用于持续广播的。客户端会定期的加载一些新的索引文件。客户端会从新更新的索引文件中去查找加密密钥并且将关联的URL加入到请求队列中去。

HLS 的使用

使用 HLS 需要使用一些工具,当然大部分工具都是服务器端使用的,这里简单了解一下就行,包括 media stream segmenter, a media file segmenter, a stream validator, an id3 tag generator, a variant playlist generator.这些工具用英文注明是为了当你在苹果开发中心中寻找时方便一些。

会话模式

通常包含 Live 和 VOD (点播)两种

点播VOD的特点就是可以获取到一个静态的索引文件,其中那个包含一套完整的资源文件地址。这种模式允许客户端访问全部节目。VOD点播拥有先进的下载技术,包括加密认证技术和动态切换文件传输速率的功能(通常用于不同分辨率视频之间的切换)。

Live会话就是实时事件的录制展示。它的索引文件一直处于动态变化的,你需要不断的更新索引文件 playlist 然后移除旧的索引文件。这种类型通过向索引文件添加媒体地址可以很容易的转化为VOD类型。在转化时不要移除原来旧的源,而是通过添加一个#ET-X-ENDLIST标记来终止实时事件。转化时如果你的索引文件中包含EXT-X-PLAYLIST-TYPE标签,你需要将值从EVENT改为VOD。

客户端可以缓存m3u8

缓存和发送协议

HTTPS通常用于发送密钥,同时,他也可以用于平时的媒体片段和索引文件的传输。但是当扩展性更重要时,这样做是不推荐的。HTTPS 请求通常都是绕开 web 服务缓存,导致所有内容请求都是通过你的服务进行转发,这有悖于分布式网络连接系统的目的。

处于这个原因,确保你发送的网络内容都明白非常重要。当处于实况广播模式时索引文件不会像分片媒体文件一样长时间的被缓存,他会动态不停地变化。

流切换

如果你的视频具备流切换功能,这对于用户来说是一个非常棒的体验,处于不同的带宽、不同的网速播放不同清晰度的视频流,这样只能的流切换可以保证用户感觉到非常流畅的观影体验,同时不同的设备也可以作为选择的条件,比如视网膜屏可以再网速良好的情况下播放清晰度更高的视频流。

相关文章

  • 移动端直播那点事

    最近研究模仿战旗直播的app ,今天把视频源弄到了 可以和正常线app一样看视频了。 首先介绍一下 HTTP Li...

  • 移动端开发:架构那点事!

    此前,58 同城的技术委员会执行主席沈剑在 OneAPM 的技术公开课上分享过一个主题,「好的架构不是设计出来的,...

  • 企业想随心交易赚不停?就看视频直播这增量市场

    直播 · 时代 消费升级催生营销市场发展新阶段,移动端网民数的快速增长,直接推动直播行业向移动端转移,为移动直播平...

  • 乐视移动直播的集成

    乐视移动直播的集成(一)—— 乐视云直播产品及其SDK乐视移动直播的集成(二)—— 推流和拉流端的封装乐视移动直播...

  • 直播那点事

    文\向阳花开 一场疫情,改变了我的老师身份,摇身一变,成为网红主播。 “Call1,CaⅡ666”互动 “同学们,...

  • 直播那点事

    2020年什么行业最火?答案当然是直播啦。而直播带货更是火中又火! 君不见薇娅、李佳琪之辈直播带货所产生的经济效益...

  • 直播那点事

    这三天连着做直播,今天是《不急不催 轻松让孩子学会时间管理》这本书的最后一次分享,发现连着三天分享还是挺累人的。 ...

  • 移动直播的延时控制--基于ijkplayer的实践

    移动直播的兴起使得在移动端观看直播的需求日渐增多,相交于点播而言,直播提出了一个新的要求——实时性,也即要求主播端...

  • 一看就能学会的H5视频推流方案

    本文由云+社区发表 作者:周超 导语 随着直播平台爆发式增长,直播平台从 PC 端转战移动端,紧跟着直播的潮流,自...

  • 聊聊直播那点事

    最近翻看朋友圈,发现不少朋友都开始做起了直播。更有朋友表示,公司已经开始动员全体员工直播卖货了,就连她这个财务也被...

网友评论

本文标题:移动端直播那点事

本文链接:https://www.haomeiwen.com/subject/sltzkttx.html