eg:

<img class="y-yJ5" decoding="sync" sizes="313.30682373046875px" 
     srcset="https://scontent-lax3-2.cdninstagram.com/vp/50a67b09b2837db7d6c7ff40af5bd718/5CFE5B54/t51.12442-15/sh0.08/e35/p640x640/61517675_144383416680570_7484529417298150614_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com 
             640w,
             https://scontent-lax3-2.cdninstagram.com/vp/2199e4f8dc87ea40fbea6ddf61ec3cf1/5CFEE994/t51.12442-15/sh0.08/e35/p750x750/61517675_144383416680570_7484529417298150614_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com
             750w,
             https://scontent-lax3-2.cdninstagram.com/vp/1eff38d939eb02f3cc6faf8ebe7e373f/5CFEC5B3/t51.12442-15/e35/61517675_144383416680570_7484529417298150614_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com
             1080w"
     src="https://scontent-lax3-2.cdninstagram.com/vp/1eff38d939eb02f3cc6faf8ebe7e373f/5CFEC5B3/t51.12442-15/e35/61517675_144383416680570_7484529417298150614_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"
>
<video class="y-yJ5  OFkrO " 
       preload="auto" playsinline="" 
       poster="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" 
       autoplay="" __idm_id__="619594753">
    <source src="https://scontent-lax3-2.cdninstagram.com/vp/93be3ed9ff84b250a850e09d53dba996/5CFE5D0C/t50.12441-16/62272305_2515335345164290_7030818270880482125_n.mp4?_nc_ht=scontent-lax3-2.cdninstagram.com"
        type="video/mp4; codecs=&quot;avc1.4D401E&quot;">
    <source src="https://scontent-lax3-2.cdninstagram.com/vp/50542def45ac4acbdc530ec2962faa34/5CFEE580/t50.12441-16/62412953_144941673245980_1021995177495594373_n.mp4?_nc_ht=scontent-lax3-2.cdninstagram.com"
        type="video/mp4; codecs=&quot;avc1.42E01E&quot;">
</video>

可以看出图片组有:640W750W1080W 三种尺寸的图片;视频组有:avc1.4D401Eavc1.42E01E 两种视频。
那么问题来了,它俩谁的视频质量更高一些?

1、

两种编码格式搜了下,在 stackoverflow 有解答,以下为原答案。

The codecs parameter is specified by RFC 6381. Specifically, see section 3.3 for the meaning of avc1 and mp4a values.
In the case of avc1.4D401Eavc1 indicates H.264 video, and this is followed by a dot and three 2-digit hexadecimal numbers defined by the H.264 standard:

  1. profile_idc
  2. the byte containing the constraint_set flags (currently constraint_set0_flag through constraint_set5_flag, and the reserved_zero_2bits)
  3. level_idc

Some examples:

  • avc1.42E01E: H.264 Constrained Baseline Profile Level 3
  • avc1.4D401E: H.264 Main Profile Level 3
  • avc1.64001E: H.264 High Profile Level 3

These are also the second, third, and fourth bytes of the Sequence Parameter Set and the AVC Configuration Box in an MP4 file. You can dump these bytes using a program such as mp4filemp4file --dump movie.mp4. Look for the avcC (AVC Configuration) Box and the hexadecimal values for AVCProfileIndicationprofile_compatibility, and AVCLevelIndication.
As for mp4a.40.2mp4a indicates MPEG-4 audio. It is followed by a dot and a hexadecimal ObjectTypeIndication (objectTypeId in mp4file output), which can be looked up on the MPEG4 registration site. If this hexadecimal value is 40 (ISO/IEC 14496-3 Audio), it is followed by another dot and an audio object type in decimal. These are listed in the ISO/IEC 14496-3 standard and on Wikipedia, and correspond to the first 5 bits of the DecoderSpecificInfo (decSpecificInfo) (unless these bits equal 31, in which case add 32 to the next 6 bits). mp4a.40.2 indicates AAC LC audio, which is what is usually used with H.264 HTML5 video.
For example, codecs="avc1.42E01E, mp4a.40.2" would be correct for the movie below:

$ mp4file --dump movie.mp4
...
    type avcC (moov.trak.mdia.minf.stbl.stsd.avc1.avcC)  ◀━━ avc1
     configurationVersion = 1 (0x01)
     AVCProfileIndication = 66 (0x42)    ◀━━ 42
     profile_compatibility = 224 (0xe0)  ◀━━ E0
     AVCLevelIndication = 30 (0x1e)      ◀━━ 1E
...
    type esds (moov.trak.mdia.minf.stbl.stsd.mp4a.esds)  ◀━━ mp4a
     version = 0 (0x00)
     flags = 0 (0x000000)
     ESID = 2 (0x0002)
     streamDependenceFlag = 0 (0x0) <1 bits>
     URLFlag = 0 (0x0) <1 bits>
     OCRstreamFlag = 0 (0x0) <1 bits>
     streamPriority = 0 (0x00) <5 bits>
     decConfigDescr
      objectTypeId = 64 (0x40)           ◀━━ 40
      streamType = 5 (0x05) <6 bits>
      upStream = 0 (0x0) <1 bits>
      reserved = 1 (0x1) <1 bits>
      bufferSizeDB = 0 (0x000000) <24 bits>
      maxBitrate = 78267 (0x000131bb)
      avgBitrate = 78267 (0x000131bb)
      decSpecificInfo
       info = <2 bytes>  11 90  |..|     ◀━━ 2 (first 5 bits in decimal)
...

到这里我们可以了解到:
avc1.4D401E
avc1
4D    ◀━━ 77
40    ◀━━ 64
1E    ◀━━ 30
avc1.42E01E
avc1
42    ◀━━ 66
E0    ◀━━ 224
1E    ◀━━ 30

  • avc1.42E01E: H.264 Constrained Baseline Profile Level 3
  • avc1.4D401E: H.264 Main Profile Level 3

2、

H.264的目标应用涵盖了大部分的视频服务,如有线电视远程监控、交互媒体、数字电视、视频会议、视频点播、流媒体服务等。
H.264为解决不同应用中的网络传输的差异。定义了两层:视频编码层(VCL:Video Coding Layer)负责高效的视频内容表示,网络提取层(NAL:Network AbstractionLayer)负责以网络所要求的恰当的方式对数据进行打包和传送(如图所示: 标准的整体框架)。
基本层次(Baseline Profile):该层次使用了H.264的除了B-Slices,CABAC以及交织编码模式外所有的特性。该层次主要使用于低时延的实时应用场合。
主要层次(Main Profile):包含Baseline profile的所有特性,并包括了B-slices,CABAC以及交织编码模式。它主要针对对时延要求不高,当压缩率和质量要求较高的场合。
扩展层次(Profile X):支持所有Baseline profile的特性,但不支持CABAC以及基于宏块的自适应帧场编码。该层次主要针对的时各种网络视频流传输方面的应用。
1.分层设计 H.264的算法在概念上可以分为两层:视频编码层负责高效的视频内容表示,网络提取层(NAL:Network Abstraction Layer)负责以网络所要求的恰当的方式对数据进行打包和传送。在VCL和NAL之间定义了一个基于分组方式的接口,打包和相应的信令属于NAL的一部分。这样,高编码效率和网络友好性的任务分别由VCL和NAL来完成。
VCL层包括基于块的运动补偿混合编码和一些新特性。与前面的视频编码标准一样,H.264没有把前处理和后处理等功能包括在草案中,这样可以增加标准的灵活性。
NAL负责使用下层网络的分段格式来封装数据,包括组帧、逻辑信道的信令、定时信息的利用或序列结束信号等。例如,NAL支持视频在电路交换信道上的传输格式,支持视频在Internet上利用RTP/UDP/IP传输的格式。NAL包括自己的头部信息、段结构信息和实际载荷信息,即上层的VCL数据。(如果采用数据分割技术,数据可能由几个部分组成)。
来源:百度百科

到这里我们就已经得到想要的答案了。

  • avc1.42E01E: 基本层次
  • avc1.4D401E: 主要层次

视频质量:avc1.4D401E  > avc1.42E01E

文章目录