本文列出了查询受支持媒体播放类型的 Windows API 支持的 MIME 类型字符串。 术语“内容类型”和“类型”在过去被称为 MIME 类型。这些基本字符串与 HTMLMediaElement.canPlayType 方法中使用的字符串一致。 这些字符串允许开发人员查询是否支持指定的媒体内容、编解码器和功能。
内容类型字符串在以下规范中定义。
- RFC 2045 此规范定义用于指定媒体类型和子类型标识符的内容类型字符串。
- RFC 6381 此规范定义编解码器标识符用于指定编解码器。
- RFC 2045 此规范允许以
";<parameter>=<name>[=<value>] [,<name>[=<value>]"
形式添加其他自定义参数作为修饰符。 RFC 2045 合规分析程序必须忽略这些参数(如果未识别)。 对于功能查询,<parameter>
为命名的功能。 - RFC 4281 此规范使扩展能够查询其他功能。
Windows 实现要求 RFC 2045 媒体类型和子类型标识符(例如 "video/mp4"
)和 RFC 6381 编解码器参数 codec="<video codec>[,<audio codec>]"
始终存在,以提供有效的查询结果。 某些 Windows API 接口支持附加的 feature=<features>
元素。 下表列出了 Windows API 为字符串类型的每个元素所支持的字符串。
本文中所述的内容类型字符串格式由以下 API 使用。
WinRT API
- ProtectionCapabilities.IsTypeSupported
- Windows.UI.Xaml.Controls.MediaElement.CanPlayType(System.String)
Microsoft 媒体基础 API
- IMFContentDecryptionModuleFactory::IsTypeSupported
- IMFExtendedDRMTypeSupport::IsTypeSupportedEx
- IMFMediaEngineClassFactoryEx::IsTypeSupported
- IMFMediaSourceExtension::IsTypeSupported
- IMFMediaEngine::CanPlayType
- IMFMediaEngineExtension::CanPlayType
其中许多 API 返回将结果表示为“NotSupported”、“Maybe”或“Probably”的枚举值。 对于 WinRT API,存在 ProtectionCapabilityResult 和 MediaCanPlayResponse 枚举类型。 对于媒体基础,存在 MF_MEDIA_ENGINE_CANPLAY 枚举。 某些 Media Foundation API 仅返回一个布尔值,该值指示二进制支持的结果或不受支持的结果。
媒体类型和子类型
Windows API 仅支持媒体类型 "video"
和 "mp4"
的子类型/容器的内容类型字符串。
价值 | 描述 | 言论 |
---|---|---|
"video/mp4" | 视频媒体类型和 MPEG-4 子类型/容器。 |
视频编解码器
价值 | 描述 | 言论 |
---|---|---|
"avc1" | H.264 | |
"hvc1" | HEVC | |
“hev1” | HEVC | |
“vp9” | VP9 | |
“vp09” | VP9 | |
"avc3" | H.264 | |
"av1" | AOMedia 视频 1 | |
“av01” | AOMedia 视频 1 |
特征
项 | 子系统 | 功能名称 | 特征值 | 描述 | 对于此子系统是必需的 | 言论 |
---|---|---|---|---|---|---|
1a | 视频解码 | decode-res-x | 非负数(以像素为单位) | 视频解码器是否支持 X 轴中的此最大分辨率? | 是 | |
1b | 视频解码 | decode-res-y | 非负数(以像素为单位) | 视频解码器是否支持 Y 轴中的此最大分辨率? | 是 | |
1c | 视频解码 | decode-bitrate | 以 KB/秒 (Kbps) 为单位的正数 | 视频解码器是否支持此最大比特率? | 是 | |
1d | 视频解码 | decode-fps | 24、25、29.97、30、50、59.94 或 60 | 视频解码是否支持每秒最大帧数(FPS)值? | 是 | |
1e | 视频解码 | decode-bpc (decode-bpp 已弃用) | 0、8、10 或 12 | 视频解码器是否可以使用此每像素颜色深度? | 是 | |
1f | 视频解码 | 解码器硬件加速 | 1 或无值 (true) | 无论是否存在 OS 解码器,DXVA 硬件加速是否可用? | N | Windows 10 版本 1709 中引入的支持 |
1g | 视频解码 | decoder-software-acceleration | 1 或无值 (true) | 是否存在一个可以解码流的 OS 解码器? | N | Windows 10 版本 1709 中引入的支持 |
1h | 视频解码 | 解码器软件需要硬件支持 | 1 或无值 (true) | OS 解码器的功能是否要求存在 DXVA 硬件加速? | N | Windows 10 版本 1709 中引入的支持 |
2a | 视频显示 1 | display-res-x | 非负数(以像素为单位) | 是否至少有一个相交的显示器在 X 轴上支持此分辨率? 请参阅分辨率交集算法。 | 是 | |
2b | 视频显示 1 | display-res-y | 非负数(以像素为单位) | 是否有至少一个交叉显示器支持在 Y 轴上的这种分辨率? | 是 | 请参阅分辨率交集算法。 |
2c | 视频显示 1 | display-refreshrate | 24、25、29.97、30、50、59.94 或 60 | 显示器是否已配置为至少请求的刷新率(由 Windows 理解)? | N | |
2d | 视频显示 1 | display-bpc(display-bpp 已弃用) | 8 或 10 | 所有具备至少要求分辨率的相交显示器是否实现了至少此颜色深度? | N | |
3 | 视频显示器 2* | hdr | 1 (支持) | 目标是否支持高动态范围(HDR)呈现 | 是 | |
4 | 视频输出保护 | hdcp | 0(关闭),1(无 HDCP 2.2 类型 1 限制),2(使用 HDCP 2.2 类型 1 限制) | 所有启用相交的显示器是否至少支持请求保护级别? | 是 | |
5 | 常规视频:效率 | efficiency-setting | 0(关 = 无限制),1(开 = 使用电池电源时限制分辨率) | 用户是否希望电池续航、流式传输开销和/或下载速度优先于最高分辨率? | 是 | Windows 10 版本 1709 中引入的支持。 请参阅启用效率设置后的分辨率。 |
6a | 视频解密 | 加密类型 | “cenc”或“cbcs” | 此加密类型是否支持使用指定的编解码器/密钥系统进行解密? 如果未指定值,则使用默认值“cenc”。 | N | |
6b | 视频解密 | encryption-iv-size | 8 或 16 | 此初始化向量(IV)大小(以字节为单位)是否支持使用指定的编解码器/密钥系统进行解密? 如果未指定值,则使用默认值 8。 | N | |
7 | 音频呈现器 | audio-endpoint-codec | 音频编解码器字符串。 请参阅 [支持的音频终结点编解码器] (#supported-audio-endpoint-codecs) | 音频终结点是否原生支持此音频编解码器? | N | Windows 10 内部版本 1803 中引入的支持。 仅受 Microsoft 媒体基础 API 支持。 不支持 WinRT API。 |
分辨率交集算法
交集算法为:
- 查找应用程序用户界面视频客户端区域具有像素的所有显示器。
- 查找在步骤 1 中控制显示器的所有图形适配器。 对于硬件 DRM 查询,此适配器集仅筛选为具有硬件 DRM 支持的适配器。
- 查找连接到步骤 2 中图形适配器的所有显示器。
启用效率设置后的分辨率
由内容提供者决定当此策略启用时要使用的分辨率限制。 建议使用 1080p 限制,但可以使用 720p。 请注意,此策略的输入来自 Windows 10 版本 1709 中添加的视频设置用户界面页面。
音频编解码器
价值 | 描述 | 言论 |
---|---|---|
"mp4a" | MPEG-4 音频 | |
"ac-3" | Dolby Digital | |
"ec-3" | Dolby Digital Plus | |
"ac-4" | Dolby AC-4 | |
"flac" | FLAC | |
"mp3" | MP3 |
支持的音频终结点编解码器
某些音频编码功能需要音频终结点能够原生支持该功能。 音频终结点编解码器 扩展对应用程序和流媒体服务非常有用,使它们能够动态判断是否应发送立体声音频或 5.1(因为设备支持 5.1),因此在最大化音频质量的同时控制带宽使用。
audio-endpoint-codec
查询不同于 codecs
查询,因为它确定连接到电脑的音频终结点设备是否支持指定的格式。 因此,例如,如果电脑具有 AC3 编解码器的软件解码器,则 codecs=ac-3
查询将成功。 如果电脑使用基本耳机作为音频终结点,则 audio-endpoint-codec=ac-3
查询将失败。 但是,如果电脑连接到可以解码 AC3 格式的音频/视频接收器,audio-endpoint-codec=ac-3
查询将传递。
Windows 10 内部版本 1803 引入了对 音频终端编解码器 的支持。
下面是使用 audio-endpoint-codec的示例内容类型字符串。
'video/mp4; codecs="avc1,mp4a"; features="audio-endpoint-codec=DD"'
下面是未压缩 PCM 音频的示例内容类型字符串。
'video/mp4; features="audio-endpoint-codec=PCM2.0"'
请注意,如果终结点支持指定的更多或相同数量的通道,则检查将成功。 因此,如果系统配置为 5.1 音频,则检查“PCM2.0”和“PCM5.1”将通过,但检查“PCM7.1”将失败。
编解码器字符串 | 描述 | 言论 |
---|---|---|
DD | Dolby Digital | |
DD+ | Dolby Digital Plus | |
DD+JOC | Dolby Digital + JOC 压缩空间音频 | |
DTS | DTS 压缩音频 | |
DTSHD | DTS-HD 压缩音频 | |
PCM2.0 | 未压缩的 2 声道音频 | |
PCM5.1 | 未压缩的 5.1 通道音频 | |
PCM7.1 | 未压缩的 7.1 通道音频 | |
AC3 | Dolby Digital |