筛选器和动态清单Filters and dynamic manifests

从 2.17 版开始,可使用媒体服务为资产定义筛选器。Starting with 2.17 release, Media Services enables you to define filters for your assets. 这些筛选器是服务器端规则,可让客户选择执行如下操作:只播放一段视频(而非播放完整视频),或只指定客户设备可以处理的一部分音频和视频再现内容(而非与该资产相关的所有再现内容)。These filters are server-side rules that will allow your customers to choose to do things like: play back only a section of a video (instead of playing the whole video), or specify only a subset of audio and video renditions that your customer's device can handle (instead of all the renditions that are associated with the asset). 通过按客户请求创建的动态清单 可以实现对资产进行筛选,并基于指定的筛选器流式传输视频。This filtering of your assets is achieved through Dynamic Manifests that are created upon your customer's request to stream a video based on specified filter(s).

本主题讨论一些常见方案,在这些方案中使用筛选器对于客户很有利,并链接到演示如何以编程方式创建筛选器的主题。This topic discusses common scenarios in which using filters would be beneficial to your customers and links to topics that demonstrate how to create filters programmatically.

概述Overview

将内容传送到客户(流式传输直播活动或视频点播)时,目标是:将优质视频传递到处于不同网络条件下的各种设备。When delivering your content to customers (streaming live events or video-on-demand) your goal is to deliver a high-quality video to various devices under different network conditions. 若要实现此目标,请执行以下操作:To achieve this goal do the following:

  • 将流编码成多比特率(自适应比特率)视频流(这将会负责处理质量和网络条件),并encode your stream to multi-bitrate (adaptive bitrate) video stream (this will take care of quality and network conditions) and
  • 使用媒体服务动态打包将流动态地重新打包成不同的协议(这将会负责不同设备上的流式处理)。use Media Services Dynamic Packaging to dynamically re-package your stream into different protocols (this will take care of streaming on different devices). 媒体服务支持以下自适应比特率流式处理技术的传送:HTTP Live Streaming (HLS)、平滑流式处理和 MPEG DASH。Media Services supports delivery of the following adaptive bitrate streaming technologies: HTTP Live Streaming (HLS), Smooth Streaming, and MPEG DASH.

清单文件Manifest files

将资产编码为以自适应比特率流式处理时,会创建一个清单(播放列表)文件(此文件基于文本或 XML) 。When you encode an asset for adaptive bitrate streaming, a manifest (playlist) file is created (the file is text-based or XML-based). 清单文件包含流元数据,例如:轨迹类型(音频、视频或文本)、轨迹名称、开始和结束时间、比特率(质量)、轨迹语言、演播窗口(持续时间固定的滑动窗口)和视频编解码器 (FourCC) 。The manifest file includes streaming metadata such as: track type (audio, video, or text), track name, start and end time, bitrate (qualities), track languages, presentation window (sliding window of fixed duration), video codec (FourCC). 此文件还会通过提供有关下一个可播放视频片段及其位置的信息,来指示播放器检索下一个片段。It also instructs the player to retrieve the next fragment by providing information about the next playable video fragments available and their location. 片段(或段)实际上是视频内容的“区块”。Fragments (or segments) are the actual “chunks” of a video content.

下面是清单文件的一个示例:Here is an example of a manifest file:

<?xml version="1.0" encoding="UTF-8"?>    
<SmoothStreamingMedia MajorVersion="2" MinorVersion="0" Duration="330187755" TimeScale="10000000">

<StreamIndex Chunks="17" Type="video" Url="QualityLevels({bitrate})/Fragments(video={start time})" QualityLevels="8">
<QualityLevel Index="0" Bitrate="5860941" FourCC="H264" MaxWidth="1920" MaxHeight="1080" CodecPrivateData="0000000167640028AC2CA501E0089F97015202020280000003008000001931300016E360000E4E1FF8C7076850A4580000000168E9093525" />
<QualityLevel Index="1" Bitrate="4602724" FourCC="H264" MaxWidth="1920" MaxHeight="1080" CodecPrivateData="0000000167640028AC2CA501E0089F97015202020280000003008000001931100011EDC00002CD29FF8C7076850A45800000000168E9093525" />
<QualityLevel Index="2" Bitrate="3319311" FourCC="H264" MaxWidth="1280" MaxHeight="720" CodecPrivateData="000000016764001FAC2CA5014016EC054808080A00000300020000030064C0800067C28000103667F8C7076850A4580000000168E9093525" />
<QualityLevel Index="3" Bitrate="2195119" FourCC="H264" MaxWidth="960" MaxHeight="540" CodecPrivateData="000000016764001FAC2CA503C045FBC054808080A000000300200000064C1000044AA0000ABA9FE31C1DA14291600000000168E9093525" />
<QualityLevel Index="4" Bitrate="1469881" FourCC="H264" MaxWidth="960" MaxHeight="540" CodecPrivateData="000000016764001FAC2CA503C045FBC054808080A000000300200000064C04000B71A0000E4E1FF8C7076850A4580000000168E9093525" />
<QualityLevel Index="5" Bitrate="978815" FourCC="H264" MaxWidth="640" MaxHeight="360" CodecPrivateData="000000016764001EAC2CA50280BFE5C0548303032000000300200000064C08001E8480004C4B7F8C7076850A45800000000168E9093525" />
<QualityLevel Index="6" Bitrate="638374" FourCC="H264" MaxWidth="640" MaxHeight="360" CodecPrivateData="000000016764001EAC2CA50280BFE5C0548303032000000300200000064C080013D60000C65DFE31C1DA1429160000000168E9093525" />
<QualityLevel Index="7" Bitrate="388851" FourCC="H264" MaxWidth="320" MaxHeight="180" CodecPrivateData="000000016764000DAC2CA505067E7C054830303200000300020000030064C040030D40003D093F8C7076850A45800000000168E9093525" />

<c t="0" d="20000000" /><c d="20000000" /><c d="20000000" /><c d="20000000" /><c d="20000000" /><c d="20000000" /><c d="20000000" /><c d="20000000" /><c d="20000000" /><c d="20000000" /><c d="20000000" /><c d="20000000" /><c d="20000000" /><c d="20000000" /><c d="20000000" /><c d="20000000" /><c d="9600000"/>
</StreamIndex>


<StreamIndex Chunks="17" Type="audio" Url="QualityLevels({bitrate})/Fragments(AAC_und_ch2_128kbps={start time})" QualityLevels="1" Name="AAC_und_ch2_128kbps">
<QualityLevel AudioTag="255" Index="0" BitsPerSample="16" Bitrate="125658" FourCC="AACL" CodecPrivateData="1210" Channels="2" PacketSize="4" SamplingRate="44100" />

<c t="0" d="20201360" /><c d="20201361" /><c d="20201360" /><c d="20201361" /><c d="20201360" /><c d="20201361" /><c d="20201360" /><c d="20201361" /><c d="20201360" /><c d="20201361" /><c d="20201360" /><c d="20201361" /><c d="20201361" /><c d="20201360" /><c d="20201361" /><c d="20201360" /><c d="6965987" /></StreamIndex>


<StreamIndex Chunks="17" Type="audio" Url="QualityLevels({bitrate})/Fragments(AAC_und_ch2_56kbps={start time})" QualityLevels="1" Name="AAC_und_ch2_56kbps">
<QualityLevel AudioTag="255" Index="0" BitsPerSample="16" Bitrate="53655" FourCC="AACL" CodecPrivateData="1210" Channels="2" PacketSize="4" SamplingRate="44100" />

<c t="0" d="20201360" /><c d="20201361" /><c d="20201360" /><c d="20201361" /><c d="20201360" /><c d="20201361" /><c d="20201360" /><c d="20201361" /><c d="20201360" /><c d="20201361" /><c d="20201360" /><c d="20201361" /><c d="20201361" /><c d="20201360" /><c d="20201361" /><c d="20201360" /><c d="6965987" /></StreamIndex>

</SmoothStreamingMedia>

动态清单Dynamic manifests

在某些情况下,默认资产的清单文件中描述的内容无法满足客户端所需的灵活性。There are scenarios when your client needs more flexibility than what's described in the default asset's manifest file. 例如:For example:

  • 特定于设备:只传送内容播放设备所支持的指定再现内容和/或指定的语言轨道(“再现内容筛选”)。Device specific: deliver only the specified renditions and/or specified language tracks that are supported by the device that is used to play back the content ("rendition filtering").
  • 缩小清单以显示直播活动的子剪辑(“子剪辑筛选”)。Reduce the manifest to show a sub-clip of a live event ("sub-clip filtering").
  • 修剪视频开头(“修剪视频”)。Trim the start of a video ("trimming a video").
  • 调整演播窗口,以便在播放器中提供长度有限的 DVR 窗口(“调整演播窗口”)。Adjust Presentation Window (DVR) in order to provide a limited length of the DVR window in the player ("adjusting presentation window").

为实现这种灵活性,媒体服务会根据预定义的 筛选器 提供 动态清单To achieve this flexibility, Media Services offers Dynamic Manifests based on pre-defined filters. 定义筛选器后,客户端会使用筛选器来流式传输视频的特定再现内容或子剪辑。Once you define the filters, your clients could use them to stream a specific rendition or sub-clips of your video. 客户端将在流 URL 中指定筛选器。They would specify filter(s) in the streaming URL. 筛选器可应用到动态打包支持的自适应比特率流式处理协议:HLS、MPEG-DASH 和平滑流式处理。Filters could be applied to adaptive bitrate streaming protocols supported by Dynamic Packaging: HLS, MPEG-DASH, and Smooth Streaming. 例如:For example:

包含筛选器的 MPEG DASH URLMPEG DASH URL with filter

http://testendpoint-testaccount.streaming.mediaservices.chinacloudapi.cn/fecebb23-46f6-490d-8b70-203e86b0df58/BigBuckBunny.ism/Manifest(format=mpd-time-csf,filter=MyLocalFilter)http://testendpoint-testaccount.streaming.mediaservices.chinacloudapi.cn/fecebb23-46f6-490d-8b70-203e86b0df58/BigBuckBunny.ism/Manifest(format=mpd-time-csf,filter=MyLocalFilter)

包含筛选器的平滑流 URLSmooth Streaming URL with filter

http://testendpoint-testaccount.streaming.mediaservices.chinacloudapi.cn/fecebb23-46f6-490d-8b70-203e86b0df58/BigBuckBunny.ism/Manifest(filter=MyLocalFilter)http://testendpoint-testaccount.streaming.mediaservices.chinacloudapi.cn/fecebb23-46f6-490d-8b70-203e86b0df58/BigBuckBunny.ism/Manifest(filter=MyLocalFilter)

有关如何传送内容和构建流 URL 的详细信息,请参阅传送内容概述For more information about how to deliver your content and build streaming URLs, see Delivering content overview.

备注

请注意,动态清单不会更改资产和该资产的默认清单。Note that Dynamic Manifests do not change the asset and the default manifest for that asset. 客户端可以选择请求包含或不包含筛选器的流。Your client can choose to request a stream with or without filters.

筛选器Filters

有两种类型的资产筛选器:There are two types of asset filters:

  • 全局筛选器(可以应用到 Azure 媒体服务帐户中所有的资产,拥有帐户的生存期)和Global filters (can be applied to any asset in the Azure Media Services account, have a lifetime of the account) and
  • 本地筛选器(在创建后只能应用到与筛选器关联的资产,拥有资产的生存期)。Local filters (can only be applied to an asset with which the filter was associated upon creation, have a lifetime of the asset).

全局和本地筛选器类型具有完全相同的属性。Global and local filter types have exactly the same properties. 两者的主要差异在于它们更适合哪些方案。The main difference between the two is for which scenarios what type of a filer is more suitable. 全局筛选器通常适用于设备配置文件(再现内容筛选),而本地筛选器可用于修剪特定的资产。Global filters are generally suitable for device profiles (rendition filtering) where local filters could be used to trim a specific asset.

常见方案Common scenarios

如前所述,在将内容传送到客户(流式传输直播活动或视频点播)时,目标就是:将优质视频传递到处于不同网络条件下的各种设备。As was mentioned before, when delivering your content to customers (streaming live events or video-on-demand) your goal is to deliver a high-quality video to various devices under different network conditions. 此外,可能在筛选资产与使用动态清单方面具有其他的要求。In addition, you might have other requirements that involve filtering your assets and using of Dynamic Manifests. 以下部分提供了不同筛选方案的简要概述。The following sections give a short overview of different filtering scenarios.

  • 仅指定某些设备可以处理的音频和视频再现内容子集(而不是与该资产关联的所有再现内容)。Specify only a subset of audio and video renditions that certain devices can handle (instead of all the renditions that are associated with the asset).
  • 仅播放视频的某个部分(而不是整个视频)。Playing back only a section of a video (instead of playing the whole video).
  • 调整 DVR 演播窗口。Adjust DVR presentation window.

再现内容筛选Rendition filtering

可选择将资产编码成多个编码配置文件(H.264 Baseline、H.264 High、AACL、AACH、Dolby Digital Plus),以及多个优质比特率。You may choose to encode your asset to multiple encoding profiles (H.264 Baseline, H.264 High, AACL, AACH, Dolby Digital Plus) and multiple quality bitrates. 不过,并非所有的客户端设备都支持所有的资产配置文件和比特率。However, not all client devices will support all your asset's profiles and bitrates. 例如,早期的 Android 设备只支持 H.264 Baseline+AACL。For example, older Android devices only support H.264 Baseline+AACL. 将较高的比特率发送到不能利用这些优势的设备会浪费带宽及设备计算资源。Sending higher bitrates to a device which cannot get the benefits, wastes bandwidth and device computation. 此类设备必须解码所有给定信息,目的仅仅是为了缩小信息以便能够显示。Such device must decode all the given information, only to scale it down for display.

借助动态清单,可以创建设备配置文件(例如移动配置文件、控制台、HD/SD 等),并包含想要纳入配置文件中的曲目与质量。With Dynamic Manifest, you can create device profiles such as mobile, console, HD/SD, etc. and include the tracks and qualities which you want to be a part of each profile.

再现内容筛选示例

以下示例使用编码器将夹层资产编码成七个 ISO MP4 视频再现内容(从 180p 到 1080p)。In the following example, an encoder was used to encode a mezzanine asset into seven ISO MP4s video renditions (from 180p to 1080p). 编码的资产可动态打包成以下任一流协议:HLS、平滑流和 MPEG DASH。The encoded asset can be dynamically packaged into any of the following streaming protocols: HLS, Smooth, and MPEG DASH. 图表顶部显示了不包含筛选器的资产的 HLS 清单(包含全部七个再现内容)。At the top of the diagram, the HLS manifest for the asset with no filters is shown (it contains all seven renditions). 左下角显示名为“ott”的筛选器已应用到 HLS 清单。In the bottom left, the HLS manifest to which a filter named "ott" was applied is shown. “ott”筛选器指定要删除所有不低于 1Mbps 的比特率,因此质量最差的两个级别会从响应中剥除。The "ott" filter specifies to remove all bitrates below 1Mbps, which resulted in the bottom two quality levels being stripped off in the response. 右下角显示名为“mobile”的筛选器已应用到 HLS 清单。In the bottom right, the HLS manifest to which a filter named "mobile" was applied is shown. “mobile”筛选器指定删除分辨率大于 720p 的再现内容,因此会剥除两个 1080p 再现内容。The "mobile" filter specifies to remove renditions where the resolution is larger than 720p, which resulted in the two 1080p renditions being stripped off.

再现内容筛选

删除语言音轨Removing language tracks

你的资产可能包含多种音频语言,例如英语、西班牙语、法语等。通常,播放器 SDK 管理器会按默认选择音频轨迹,并根据用户的选择来选择可用音频轨迹。Your assets might include multiple audio languages such as English, Spanish, French, etc. Usually, the Player SDK managers default audio track selection and available audio tracks per user selection. 开发此类播放器 SDK 相当有挑战性,因为各个设备特定的播放器框架之间需要不同的实现。It is challenging to develop such Player SDKs, it requires different implementations across device-specific player-frameworks. 此外,播放器 API 在某些平台上受到限制,且不包含音频选择功能,因此用户无法选择或更改默认的音频轨迹。使用资产筛选器,可以通过创建只包含所需音频语言的筛选器来控制行为。Also, on some platforms, Player APIs are limited and do not include audio selection feature where users cannot select or change the default audio track. With asset filters, you can control the behavior by creating filters that only include desired audio languages.

语言音轨筛选

修剪资产开头Trimming start of an asset

大多数实时流事件中,操作员必须在发生实际事件之前进行某些测试。In most live streaming events, operators run some tests before the actual event. 例如,他们可以在事件开始之前提供如下盖板:“节目即将开始”。For example, they might include a slate like this before the start of the event: "Program will begin momentarily". 如果节目正在存档,测试和静态数据也会一并存档并包含在演播中。If the program is archiving, the test and slate data are also archived and included in the presentation. 但是,此信息不应向客户端显示。However, this information should not be shown to the clients. 借助动态清单,可以创建开始时间筛选器,并从清单中删除不需要的数据。With Dynamic Manifest, you can create a start time filter and remove the unwanted data from the manifest.

剪裁开始

基于实时存档创建子剪辑(视图)Creating subclips (views) from a live archive

许多直播活动长期运行,直播存档可能包含多个活动。Many live events are long running and live archive might include multiple events. 直播活动结束后,广播者可能需要将实时存档分解成符合逻辑的节目启动和停止序列。After the live event ends, broadcasters may want to break up the live archive into logical program start and stop sequences. 接下来,分别发布这些虚拟节目,但不后续处理实时存档,也不创建独立的资产。Next, publish these virtual programs separately without post processing the live archive and not creating separate assets. 此类虚拟节目的示例包括橄榄球或篮球比赛中的节、棒球比赛中的局,或者任何体育节目中的单项赛事。Examples of such virtual programs are the quarters of a football or basketball game, innings in baseball, or individual events of any sports program.

借助动态清单,可以使用开始/结束时间创建筛选器,并基于实时存档创建虚拟视图。With Dynamic Manifest, you can create filters using start/end times and create virtual views over the top of your live archive.

子剪辑筛选器

筛选的资产:Filtered Asset:

滑雪

调整演播窗口 (DVR)Adjusting Presentation Window (DVR)

目前,Azure 媒体服务提供持续时间可设为 5 分钟到 25 小时的循环存档。Currently, Azure Media Services offers circular archive where the duration can be configured between 5 minutes - 25 hours. 清单筛选可以基于存档创建循环 DVR 窗口存档,而不会删除媒体。Manifest filtering can be used to create a rolling DVR window over the top of the archive, without deleting media. 许多情况下,广播者需要提供受限制的 DVR 窗口,此窗口可随着实时边缘移动,并同时保留更大的存档窗口。There are many scenarios where broadcasters want to provide a limited DVR window to move with the live edge and at the same time keep a bigger archiving window. 广播者可能想要使用超出 DVR 窗口的数据来突出显示剪辑,或者想要为不同的设备提供不同的 DVR 窗口。A broadcaster may want to use the data that is out of the DVR window to highlight clips, or they may want to provide different DVR windows for different devices. 例如,大多数移动设备不处理大的 DVR 窗口(可让移动设备有 2 分钟的 DVR 窗口,桌面客户端有一小时的 DVR 窗口)。For example, most of the mobile devices don’t handle large DVR windows (you can have a 2-minute DVR window for mobile devices and one hour for desktop clients).

DVR 窗口

调整实时补偿(实时位置)Adjusting LiveBackoff (live position)

清单筛选可用于删除实时节目的实时边缘几秒钟的时间。Manifest filtering can be used to remove several seconds from the live edge of a live program. 通过筛选,广播者便可以在观众收到流之前(倒退 30 秒)先观赏预览发布点的演播,并创建广告插入点。Filtering allows broadcasters to watch the presentation on the preview publication point and create advertisement insertion points before the viewers receive the stream (backed-off by 30 seconds). 接下来,广播者可将这些广告及时推送到他们的客户端框架,以便能够接收与处理信息,并借机播放广告。Broadcasters can then push these advertisements to their client frameworks in time for them to received and process the information before the advertisement opportunity.

除了广告支持外,还可使用实时补偿设置来调整观看者位置,以便在客户端偏移并命中实时边缘时,仍然可以从服务器获取片段,而不会收到 HTTP 404 或 412 错误。In addition to the advertisement support, the LiveBackoff setting can be used to adjusting the viewers position so that when clients drift and hit the live edge they can still get fragments from server instead of getting an HTTP 404 or 412 error.

livebackoff_filter

将多个规则合并成单个筛选器Combining multiple rules in a single filter

可以将多个筛选规则合并成单个筛选器。You can combine multiple filtering rules in a single filter. 例如,可以定义一个“范围规则”,将静态内容从实时存档中删除,并筛选出可用的比特率。As an example you can define a "range rule" to remove slates from a live archive and also filter out available bitrates. 应用多项筛选规则时,最终结果是所有规则的交集。When applying multiple filtering rules, the end result is the intersection of all rules.

多规则

以编程方式创建筛选器Create filters programmatically

下文讨论与筛选器相关的媒体服务实体。The following article discusses Media Services entities that are related to filters. 该文还说明如何以编程方式创建筛选器。The article also shows how to programmatically create filters.

使用 REST API 创建筛选器Create filters with REST APIs.

组合多个筛选器(筛选器组合)Combining multiple filters (filter composition)

也可以在单个 URL 中组合多个筛选器。You can also combine multiple filters in a single URL.

以下方案演示了可能需要组合多个筛选器的原因:The following scenario demonstrates why you might want to combine filters:

  1. 你需要筛选视频质量(目的是限制视频质量)以供 Android 或 iPAD 之类的移动设备使用。You need to filter your video qualities for mobile devices such as Android or iPAD (in order to limit video qualities). 若要删除质量不符合要求的视频,可以创建一个适用于设备配置文件的全局筛选器。To remove the unwanted qualities, you would create a global filter suitable for the device profiles. 如本文前面所述,全局筛选器可用于在同一媒体服务帐户下的所有资产,这些资产并没有更多的其他联系。As mentioned earlier in this article, global filters can be used for all your assets under the same media services account without any further association.
  2. 还可以修改资产的开始时间和结束时间。You also want to trim the start and end time of an asset. 为此,可以创建一个本地筛选器并设置开始/结束时间。To achieve this, you would create a local filter and set the start/end time.
  3. 你希望能够将这些筛选器组合起来(如果不组合的话,则需要将质量筛选添加到进行修改的筛选器上,这会导致筛选器的使用更困难)。You want to combine both of these filters (without combination, you need to add quality filtering to the trimming filter which makes filter usage more difficult).

若要组合筛选器,需要在清单/播放列表 URL 中设置筛选器名称,用分号对名称进行分隔。To combine filters, you need to set the filter names to the manifest/playlist URL with semicolon delimited. 假设你有一个名为 MyMobileDevice 的筛选器,用于筛选质量,另外还有一个名为 MyStartTime 的筛选器,用于设置具体的开始时间。Let’s assume you have a filter named MyMobileDevice that filters qualities and you have another named MyStartTime to set a specific start time. 可将它们组合成下面这样:You can combine them like this:

http://teststreaming.streaming.mediaservices.chinacloudapi.cn/3d56a4d-b71d-489b-854f-1d67c0596966/64ff1f89-b430-43f8-87dd-56c87b7bd9e2.ism/Manifest(filter=MyMobileDevice;MyStartTime)http://teststreaming.streaming.mediaservices.chinacloudapi.cn/3d56a4d-b71d-489b-854f-1d67c0596966/64ff1f89-b430-43f8-87dd-56c87b7bd9e2.ism/Manifest(filter=MyMobileDevice;MyStartTime)

最多可以组合三个筛选器。You can combine up to three filters.

有关详细信息,请参阅 这一 博客。For more information, see this blog.

已知问题和限制Know issues and limitations

  • 动态清单在 GOP 边界(主键帧)内运行,因此修剪后具有精确的 GOP。Dynamic manifest operates in GOP boundaries (Key Frames) hence trimming has GOP accuracy.
  • 可以对本地和全局筛选器使用相同的筛选器名称。You can use same filter name for local and global filters. 本地筛选器的优先级更高,会替代全局筛选器。Local filters have higher precedence and will override global filters.
  • 如果更新筛选器,则流式处理终结点需要最多 2 分钟来刷新规则。If you update a filter, it can take up to 2 minutes for streaming endpoint to refresh the rules. 如果内容是通过使用某些筛选器提供的(并在代理中缓存),则更新这些筛选器会导致播放器失败。If the content was served using some filters (and cached in proxies), updating these filters can result in player failures. 建议在更新筛选器之后清除缓存。It is recommended to clear the cache after updating the filter. 如果此选项不可用,请考虑使用其他筛选器。If this option is not possible, consider using a different filter.

媒体服务学习路径Media Services learning paths

媒体服务 v3(最新版本)Media Services v3 (latest)

查看最新版本的 Azure 媒体服务!Check out the latest version of Azure Media Services!

媒体服务 v2(旧版)Media Services v2 (legacy)

另请参阅See Also

将内容传送到客户概述Delivering Content to Customers Overview