

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 压缩 DASH 清单
<a name="compacted"></a>

 AWS Elemental MediaPackage中提供了压缩 DASH 清单的功能，以提高低功耗设备上 VOD 和直播的性能及处理能力。

来自的默认 DASH 清单 MediaPackage 包含有关每种表现形式（曲目）的重复数据。对于某些播放器，处理具有所有这类数据的清单的过程很困难且很慢。为了减轻部分负担， MediaPackage 可以通过将某些属性从对象移动到`Representation`对象来压缩清单。`AdaptationSet`这样，不必为清单中的每种表示形式定义属性，而是在更高级别定义这些属性一次。然后，表示形式从自适应集继承这些属性。

**Example 默认 DASH 清单**  
在以下示例中，每个 `Representation.` 中都列出了 `SegmentTemplate` 对象及其所有元素。清单中的每个自适应集都具有相同的布局：  

```
<AdaptationSet mimeType="video/mp4" segmentAlignment="true" subsegmentAlignment="true" startWithSAP="1" subsegmentStartsWithSAP="1" bitstreamSwitching="true">
   <Representation id="1" width="640" height="360" frameRate="30/1" bandwidth="749952" codecs="avc1.640029">
      <SegmentTemplate timescale="30000" media="index_video_1_0_$Number$.mp4?m=1543947824" initialization="index_video_1_0_init.mp4?m=1543947824" startNumber="1">
         <SegmentTimeline>
           <S t="62000" d="60000" r="9"/>
         </SegmentTimeline>
      </SegmentTemplate>
   </Representation>
   <Representation id="2" width="854" height="480" frameRate="30/1" bandwidth="1000000" codecs="avc1.640029">
      <SegmentTemplate timescale="30000" media="index_video_3_0_$Number$.mp4?m=1543947824" initialization="index_video_3_0_init.mp4?m=1543947824" startNumber="1">
         <SegmentTimeline>
           <S t="62000" d="60000" r="9"/>
         </SegmentTimeline>
      </SegmentTemplate>
   </Representation>
   <Representation id="3" width="1280" height="720" frameRate="30/1" bandwidth="2499968" codecs="avc1.640029">
      <SegmentTemplate timescale="30000" media="index_video_5_0_$Number$.mp4?m=1543947824" initialization="index_video_5_0_init.mp4?m=1543947824" startNumber="1">
         <SegmentTimeline>
           <S t="62000" d="60000" r="9"/>
         </SegmentTimeline>
      </SegmentTemplate>
   </Representation>
</AdaptationSet>
```

**Example 压缩的 DASH 清单**  
在本例中，`SegmentTemplate` 对象及其所有元素均折叠为一并移至 `AdaptationSet`。播放设备了解到此自适应集中的每种表示形式都使用此相同模板：  

```
<AdaptationSet mimeType="video/mp4" segmentAlignment="true" subsegmentAlignment="true" startWithSAP="1" subsegmentStartsWithSAP="1" bitstreamSwitching="true">
   <SegmentTemplate timescale="30000" media="index_video_$RepresentationID$_0_$Number$.mp4?m=1543947824" initialization="index_video_$RepresentationID$_0_init.mp4?m=1543947824" startNumber="1">
     <SegmentTimeline>
       <S t="62000" d="60000" r="9"/>
     </SegmentTimeline>
   </SegmentTemplate>
   <Representation id="1" width="640" height="360" frameRate="30/1" bandwidth="749952" codecs="avc1.640029"/>
   <Representation id="2" width="854" height="480" frameRate="30/1" bandwidth="1000000" codecs="avc1.640029"/>
   <Representation id="3" width="1280" height="720" frameRate="30/1" bandwidth="2499968" codecs="avc1.640029"/>
</AdaptationSet>
```

 有关压缩 DASH 清单的信息，请参阅 [AWS Elemental MediaPackage 如何压缩清单](#how-cpact-works)。

## AWS Elemental MediaPackage 紧凑型是如何表现出来的
<a name="how-cpact-works"></a>

**要从 AWS Elemental MediaPackage 控制台压缩 DASH 清单，请在 DASH 端点上为 **Manifest 布局**选择压缩。**为确保轨道适时可用， MediaPackage 检查源内容中的帧率和音频采样率，以确定是否可以压缩清单。

**注意**  
字幕曲目始终使用相同的速率，因此请 MediaPackage 务必压缩带有字幕的改编集。

MediaPackage 采取以下操作：
+ 如果速率跨自适应集中的所有表示形式均相同， MediaPackage 将所有 `SegmentTemplate` 对象折叠为一，然后将其移到 `AdaptationSet` 级别。这样，模板中的信息在整个清单中不会重复。要允许播放设备在不同的表示形式中使用相同的模板信息，请向`media`和`initialization`请求中 MediaPackage 添加一个`$RepresentationID$`变量 URLs。播放设备将此变量替换为其当前请求的表示形式的 ID。 MediaPackage 当`ContentProtection`元素存在时，也会将其移动到适应集。
+ 如果不同表示 MediaPackage 法的费率不同，则压缩并移动频率最高`SegmentTemplate`的费率到`AdaptationSet`。具有不同速率的表示形式保留其段模板。表示形式的速率覆盖自适应集处的速率。
+ 如果视频自适应集中确切使用两个帧率， MediaPackage 按如下所示压缩：
  + 当使用 24 和 48 时，压缩的模板使用 48 表示帧率，使用 48000 表示时基。
  + 当使用 25 和 50 时，压缩的模板使用 50 表示帧率，使用 50000 表示时基。
  + 当使用 29.97 和 59.94 时，压缩的模板使用 59.95 表示帧率，使用 60000 表示时基。
  + 当使用 30 和 60 时，压缩的模板使用 60 表示帧率，使用 60000 表示时基。

  如果使用两个视频帧率但它们不符合上述的双倍模式之一，则无法压缩此集。
+ 如果跨自适应集的表示形式没有重复速率，则无法对该自适应集进行压缩。