b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

mp4格式播放器 MP4大文件虚拟HLS分片技术,避免点播服务器的文件碎片

电脑杂谈  发布时间:2018-02-08 22:42:47  来源:网络整理

mp4格式播放器_ts格式播放器安卓_mx player mp4无法播放

导读:本文主要介绍了通过虚拟分片技术,把MP4文件,映射为HLS协议中的一个个小的TS分片文件,实现了在不实际切分MP4文件的情况下,通过HLS协议播...

本文主要介绍了通过虚拟分片技术,把MP4文件,映射为HLS协议中的一个个小的TS分片文件,实现了在不实际切分MP4文件的情况下,通过HLS协议播放MP4文件,从而避免了对MP4进行点播,尤其是大的MP4文件,需要长时间缓冲MP4头部数据的问题,同时可以解决对MP4文件进行切分,会在服务器制造出大量的文件碎片的不利情况。而且本技术,几乎可以不需要对流媒体服务器(HTTP服务)做修改。

HLS全称Http Live Streaming是当前广泛使用的直播和点播技术,最早是苹果公司实现的,跟MPEG-DASH一样是基于HTTP协议传输,可嵌入HTML5标签中播放,现在已经被移动平台的浏览器广泛支持,在pc上也可以通过js和MSE(Media Source Extensions)来实现。HLS的特点是分片文件小,加载很快,使用TS容器,格式简单,通过HTTP传输,基本不需要考虑防火墙问题,所以很快就被推广开了。

MP4大家就更熟悉了,就是由一个个box组成的媒体文件容器,就不多说了。需要指出的一点是,MP4基本上是可以分为普通MP4和FragmentMP4来,后者主要特征包含许多moof box把mp4文件分割为许多可以单独解码的单元,更适合与流媒体场景下的数据传输,我最早见到它的应用,是在微软早年推出的“SilverLight + Smooth Streaming”技术中(微软已弃坑?)。FMP4的应用也在逐渐发展中,不过比TS有一点不太好的地方是它格式有点复杂了,关于FMP4相关的技术我之后写文章介绍。

对于大家经常见到和使用到的普通MP4来说,作为电影、电视文件的存储容器,是很好的,不过对于流媒体点播来说,最大的缺点就是它的媒体信息和关键帧索引都集中存放在moov box中,而导致越大的文件,moov box越大,对播放器来说,获取不到moov box,根本无从解码,所以就导致MP4文件点播,需要缓冲很久,加载头部数据。当然常见解决方案,就是文件切分,把大的MP4文件,切为小一点的MP4文件,这样每块的MP4的加载就会快很多,这个也是很多视频网站的解决方式,这样的切分也还好,分片数量不算很多。然而到了HLS时代,为了支持HLS协议,就需要把大的MP4文件,都转换为了更小的HLS-TS分片文件,这就出现问题了,服务器太多碎片一样的TS文件,难以管理,也影响性能。怎么解决呢?那就是虚拟HLS分片技术。

一个常见的mp4文件结构如下图所见。其中最重要的即是MoovBox,记录了后续所有音频帧和视频帧的解码信息、时间戳、位置等非常关键的数据,图里称做索引数据,而在视频帧中,关键帧是最重要的节点,播放器会在关键帧位置对整个图像进行刷新,可以认为是图像解码的起点。

mx player mp4无法播放_mp4格式播放器_ts格式播放器安卓

虚拟HLS分片,顾名思义,就是不实际切片,只记录实际MP4文件和需要切分的TS分片直接的数据对应关系,然后在播放器实际请求播放的时候,通过对应关系,把相应的音频视频数据,在内存中拼装为TS文件。比如,对上述MP4文件,请求0~2秒的数据,那么就需要通过对应记录,找到0~2秒的数据,组合成MPEG-TS格式,生成HLS分片文件。mp4格式播放器当然,切分的过程需要注意,就是分片起点必须是视频关键帧的节点,否则生成文件就无法正常解码。

根据之前分析的描述分片逻辑,就可以根据moov box中罗列的音频和视频帧索引,把整个mp4文件,根据关键帧为界限,进行虚拟分片的划分,每个分段就对应一个ts文件,并把这种对应关系写入到索引文件(我这里定义为xxx.index文件)。整个方案的如下,图里描述的很清楚了


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-67759-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 刘庭琦
      刘庭琦

      再个地方政府保护当地企业也很正常

    热点图片
    拼命载入中...