zoukankan      html  css  js  c++  java
  • mp4相比m3u8第一帧加载较慢的原因?

    mp4相比m3u8第一帧加载较慢的原因?

    工作室正在做的软件,是一个以长视频播放为主的Android与IOS 手机软件。 最近半年,老板要求对视频的 秒开率(1秒内成功加载的播放数 / 播放总数)、失败率 (播放失败的次数 / 播放总数) 等进行优化。经过线上AB测试发现,m3u8视频(第一段切片为1~3秒)在秒开率、失败率等性能指标上均优于普通mp4视频

    这里想探究一下,m3u8视频(第一段切片为1~3秒)在秒开率上均优于普通mp4视频的原因。

    网络上找到的原因基本是: mp4 - PC/Apple/Android 通吃,和HTML5和flash播放器亲和度都挺好,但是文件头太大,结构复杂,长视频的大文件头影响加载速度的视频体验, 所以短视频更常见

    一、普通MP4

    这里从网络上找了一个普通MP4文件的结构图,让我们看一下它的文件结构:

    普通MP4文件结构 一眼看去,完全懵逼了,果然结构复杂...

    MP4实际代表的含义是 MPEG-4 Part 14。 其文件由若干个box组成,每个box有类型和长度,这里可以将box理解为一个数据对象块。box中还可以包含子box,包含子 box 则称之为container box

    这里我从网络上下载了一个普通MP4文件。在Mac平台上,我们用MediaParser软件可以用来大致看一下这个MP4文件的构造。

    mp4视频文件举例

    1.1、ftyp

    一个MP4文件有且只有一个 ftyp ,在MP4文件的开始位置,描述的文件的版本、兼容协议等 ;

    1.2、moov

    moov(Movie Box)是一个container box ,一般跟随在ftyp之后,有且只有一个。 其不包含具体媒体数据,但包含本文件中所有媒体数据的宏观描述信息(视频创建时间、视频修改时间、播放速率、视频时长、音量大小、视频宽高、字幕语言、声道、视频/音频帧位置 等)。

    moov box下,一般包含以下几个box:

    • mvhd 中记录了创建时间、修改时间、时间度量标尺、可播放时长等信息;
    • trak 可以有多个,描述了每个媒体轨道的具体信息;
    • udta user data;

    1.3、mdat

    mdat(Midia Data Box)MP4文件的媒体数据存放在这里。mdat中的数据帧依次存放,每个帧的位置、时间、长度都由moov中的信息指定。 mdat Box 基本上占据了视频大小的 95% 以上,得益于 mp4 边下边播的效果,浏览器获取到了部分 mdat box,就可以进行播放。

    若希望详细了解普通MP4文件结构,可参考文章: mp4文件格式解析

    结论

    了解到此,大致可以了解到: 普通MP4文件播放时,ftyp与moov box需同时加载完成后,并下载部分mdat box的帧数据后,才能开始播放。 那对于一些长视频,确实存在文件头过大,从而影响第一帧的加载速度问题。 另外,对于不是很规范的文件,例 mp4视频文件举例中moov box基本在文件最后的的MP4文件,还有可能存在视频文件基本下载完成后才能播放的问题。

    二、Fragment mp4 (fmp4)

    在网络上查找MP4文件结构时,发现一种Fragmented mp4 的文件结构图

    fmp4文件结构

    fmp4 是基于 MPEG-4 Part 12 的流媒体格式。与普通MP4相比:

    • fmp4不需要一个 moov Box 来进行 initialization
    • fmp4 的 moov Box 只包含了一些 track 信息
    • fmp4 的 视频/音频 metadata 信息与数据都存在一个个 moof、mdat 中,它是一个流式的封装格式

    2.1、Fragment

    在微软的 Silverlight中的Smooth Streaming文件结构文件分为了多个Fragments,每个Fragment中包含moof和mdat。这样的结构符合渐进式播放需求,mdat及其描述信息逐步传输,收齐一个Fragment便可播放其中的mdat

    2.2、moof

    这个box并不是MP4文件必须的部分。它是视频分片的描述信息,其为流媒体格式(微软的 Silverlight中的Smooth Streaming)中的重中之重。

    三、参考

    mp4文件格式解析

    什么是「Fragmented mp4(fmp4)」, 它和普通 mp4 格式有什么区别?

    ========== THE END ==========

    wx_gzh.jpg

  • 相关阅读:
    FJNU 1151 Fat Brother And Geometry(胖哥与几何)
    FJNU 1157 Fat Brother’s ruozhi magic(胖哥的弱智术)
    FJNU 1159 Fat Brother’s new way(胖哥的新姿势)
    HDU 3549 Flow Problem(最大流)
    HDU 1005 Number Sequence(数列)
    Tickets(基础DP)
    免费馅饼(基础DP)
    Super Jumping! Jumping! Jumping!(基础DP)
    Ignatius and the Princess IV(基础DP)
    Keywords Search(AC自动机)
  • 原文地址:https://www.cnblogs.com/xiaxveliang/p/12395836.html
Copyright © 2011-2022 走看看