@amazon-devices/keplermediadescriptor
Vega Media Descriptor API提供了可查询设备编解码器功能的功能。API还会考虑联网设备支持,并根据设备限制返回其编解码器功能。
开始使用
先决条件
KeplerMediaDescriptor API依赖于以下接口:
有关如何安装Vega SDK的说明,请参阅Vega SDK设置。
设置
将以下库依赖项添加到package.json文件的dependencies部分。
"@amazon-devices/keplermediadescriptor": "~1.1.17",
用法
使用此程序包获取设备的视频和音频功能,并相应地播放您的内容。一些常见的用例包括:
- 用于确定设备是否支持指定的视频/音频编解码器。
- 对于给定的视频编解码器,确定设备是否支持特定的配置文件级别或帧速率或比特率或分辨率。
- 确定设备是否支持特定MIME类型。
- 确定连接的设备(Fire TV Stick用例中的TV/AVR等)是否支持Dolby编解码器。
从程序包中导入所需的接口
import {
KeplerMediaDescriptor,
MediaFormat,
VideoDecoderConfig,
VideoFormat,
AudioDecoderConfig,
AudioFormat,
MediaFormatProfileLevel,
} from "@amazon-devices/keplermediadescriptor";
查询视频解码器功能。
此示例说明如何使用编解码器名称查询功能。它还设置了其他可选属性,例如分辨率、比特率和fps。
let mediaFormat : MediaFormat = new MediaFormat(CodecMimeType.MIME_AVC);
// 12Mbps比特率
mediaFormat.bitrateKbps = 12000;
// 1080p分辨率
let videoFormat = new VideoFormat();
videoFormat.resolution = {
width = 1080,
height = 1920
};
// 60fps帧速率
videoFormat.frameRate = 60;
// 使用解码器配置一次性发送
// 所有属性。
const decoderConfig = new VideoDecoderConfig();
decoderConfig.mediaFormat = mediaFormat;
decoderConfig.videoFormat = videoFormat;
decoderConfig.formatProfileLevel = profileLevel;
注意: 您也可以在MIME字符串中包含编解码器值。
// 具有主配置文件和级别4.2的avc编解码器
let mime = "video/mp4; codecs="avc1.640028""
let profileLevel = new MediaFormatProfileLevel(mime);
decoderConfig.formatProfileLevel = profileLevel;
在VideoDecoderConfig对象准备就绪后,您可以调用查询方法。如果返回的功能数组包含至少一个条目,则表示设备支持所请求的属性。
let videoCaps = await KeplerMediaDescriptor.queryMediaCapabilities(decoderConfig);
if (videoCaps.length > 0) {
console.info("设备支持请求的配置");
}
阅读返回的视频功能
从queryMediaCapabilities API返回的功能信息中,包含了有关设备支持情况的更多信息。
// 遍历支持的功能
for (let index = 0; index < videoCaps.length; index++) {
let videoCapability = videoCaps[index];
// 检查硬件是否支持编解码器
if (videoCapability.mediaCodecFeaturesCapabilities.hardwareBacked) {
console.log("硬件支持编解码器。")
}
// 获取编解码器支持的最小和最大分辨率:
let resolutions = videoCapability.videoFormatCapabilities.resolutions;
console.log("最小分辨率为", resolutions[0], "最大分辨率为", resolutions[1]);
// 获取编解码器在给定分辨率下支持的最大帧速率
let maxFps = videoCapability.videoFormatCapabilities.getMaxFrameRate(resolutions[1]);
// 获取解码器支持的所有颜色格式:
console.log(videoCapability.videoFormatCapabilities.colorFormats);
// 检查编解码器是否支持解密
if (videoCapability.decoderFeaturesCapabilities.decryptionSupported) {
console.log("此编解码器支持解密");
}
}
查询音频解码功能
与视频功能类似,您可以查询设备的音频解码支持情况。
let mediaFormat = new MediaFormat(CodecMimeType.MIME_AAC);
let audioFormat = new AudioFormat();
audioFormat.channelCount = 2;
audioFormat.sampleRate = 44100;
const decoderConfig = new AudioDecoderConfig();
decoderConfig.mediaFormat = mediaFormat;
decoderConfig.audioFormat = audioFormat;
let audioCaps = await KeplerMediaDescriptor.queryMediaCapabilities(decoderConfig);
查看Dolby支持
您可以使用queryMediaCapabilities() 方法来确定设备的Dolby支持。对于Fire TV Stick,该方法会考虑连接的电视和AVR等项目。
let mediaFormat = new MediaFormat(CodecMimeType.MIME_AC3); // 或MIME_EAC3
const decoderConfig = new AudioDecoderConfig();
decoderConfig.mediaFormat = mediaFormat;
let audioCaps = await KeplerMediaDescriptor.queryMediaCapabilities(decoderConfig);
if (audioCaps.length > 0) {
console.log("设备支持Dolby数字音频");
}
阅读返回的音频功能
// 遍历支持的功能
for (let index = 0; index < audioCaps.length; index++) {
let audioCapability = audioCaps[index];
if (audioCapability.decoderFeaturesCapabilities.decryptionSupported) {
console.log("编解码器支持解密");
}
}
常见问题解答
- 问: 我能否在一次调用中获得设备支持的所有编解码器?
- 使用
CodecMimeType.MIME_VIDEO_UNSPECIFIED和CodecMimeType.MIME_AUDIO_UNSPECIFIED作为通配符。
API参考
类
- AudioDecoderConfig — AudioDecoderConfig定义了音频所需的所有属性
- AudioFormat — AudioFormat提供用于设置不同属性的设置器
- DecoderFeatures — DecoderFeatures为不同的解码器功能提供设置器。
- KeplerMediaDescriptor — KMD API的入口点。该类提供用于查询媒体功能的API
- MediaCodecFeatures — MediaCodecFeatures为不同的编解码器功能提供设置器。
- MediaFormat — 表示媒体的格式。
- MediaFormatProfileLevel — 用于设置编解码器配置文件和级别的类。
- VideoDecoderConfig — VideoDecoderConfig定义了视频所需的所有属性
- VideoFormat — VideoFormat提供用于设置不同属性的设置器
接口
- AudioDecoderCapabilities — 一个接口,用于获取在解码用例中查询的音频编解码器的功能。
- DecoderFeaturesCapabilities — 一个接口,用于获取支持的功能对应的能力
- MediaCodecFeaturesCapabilities — 一个接口,用于获取媒体编解码器支持的功能。
- MediaFormatProfileLevelCapabilities — 一个接口,用于获取配置文件级别和编解码器参数功能
- ProfileLevel — 编解码器的配置文件和级别值。
- Resolution — 以像素为单位的视频分辨率
- VideoDecoderCapabilities — 一个接口,用于获取在解码用例中查询的视频编解码器的功能。
- VideoFormatCapabilities — 用于获取视频格式功能的接口
枚举
- AudioSampleFormat — 音频原始实例格式
- CodecMimeType — 编解码器MIME类型
- VideoColorMatrix — 视频颜色矩阵
- VideoColorPrimaries — 视频颜色原色
- VideoColorTransfer — 视频颜色转换
类型别名
变量
- AV1Level2 — AV1级别2
- AV1Level21 — AV1级别2.1
- AV1Level22 — AV1级别2.2
- AV1Level23 — AV1级别2.3
- AV1Level3 — AV1级别3
- AV1Level31 — AV1级别3.1
- AV1Level32 — AV1级别3.2
- AV1Level33 — AV1级别3.3
- AV1Level4 — AV1级别4
- AV1Level41 — AV1级别4.1
- AV1Level42 — AV1级别4.2
- AV1Level43 — AV1级别4.3
- AV1Level5 — AV1级别5
- AV1Level51 — AV1级别5.1
- AV1Level52 — AV1级别5.2
- AV1Level53 — AV1级别5.3
- AV1Level6 — AV1级别6
- AV1Level61 — AV1级别6.1
- AV1Level62 — AV1级别6.2
- AV1Level63 — AV1级别6.3
- AV1Level7 — AV1级别7
- AV1Level71 — AV1级别7.1
- AV1Level72 — AV1级别7.2
- AV1Level73 — AV1级别7.3
- AV1LevelUnknown — 未知AV1级别
- AV1ProfileMain10 — AV1主配置文件10位色深
- AV1ProfileMain10HDR10 — AV1主配置文件10位色深,适用于HDR
- AV1ProfileMain10HDR10Plus — AV1主配置文件10位色深,适用于HDR10+
- AV1ProfileMain8 — AV1主配置文件8位色深
- AV1ProfileUnknown — 未知AV1配置文件
- AVCLevel1 — AVC级别1
- AVCLevel11 — AVC级别1.1
- AVCLevel12 — AVC级别1.2
- AVCLevel13 — AVC级别1.3
- AVCLevel1b — AVC级别1b
- AVCLevel2 — AVC级别2
- AVCLevel21 — AVC级别2.1
- AVCLevel22 — AVC级别2.2
- AVCLevel3 — AVC级别3
- AVCLevel31 — AVC级别3.1
- AVCLevel32 — AVC级别3.2
- AVCLevel4 — AVC级别4
- AVCLevel41 — AVC级别4.1
- AVCLevel42 — AVC级别4.2
- AVCLevel5 — AVC级别5
- AVCLevel51 — AVC级别5.1
- AVCLevel52 — AVC级别5.2
- AVCLevel6 — AVC级别6
- AVCLevel61 — AVC级别6.1
- AVCLevel62 — AVC级别6.2
- AVCLevelUnknown — 未知AVC级别
- AVCProfileBaseline — AVC基准配置文件
- AVCProfileConstrainedBaseline — AVC受限基准配置文件
- AVCProfileConstrainedHigh — AVC受限高配置文件
- AVCProfileExtended — AVC扩展配置文件
- AVCProfileHigh — AVC高配置文件
- AVCProfileHigh10 — AVC高配置文件10
- AVCProfileHigh422 — AVC高配置文件4:2:2
- AVCProfileHigh444 — AVC高配置文件4:4:4
- AVCProfileMain — AVC主配置文件
- AVCProfileUnknown — 未知AVC配置文件
- DolbyVisionLevelFhd24 — Dolby Vision级别FHD 2.4
- DolbyVisionLevelFhd30 — Dolby Vision级别FHD 3.0
- DolbyVisionLevelFhd60 — Dolby Vision级别FHD 6.0
- DolbyVisionLevelHd24 — Dolby Vision级别HD 2.4
- DolbyVisionLevelHd30 — Dolby Vision级别HD 3.0
- DolbyVisionLevelUhd24 — Dolby Vision级别UHD 2.4
- DolbyVisionLevelUhd30 — Dolby Vision级别UHD 3.0
- DolbyVisionLevelUhd48 — Dolby Vision级别UHD 4.8
- DolbyVisionLevelUhd60 — Dolby Vision级别UHD 6.0
- DolbyVisionLevelUnknown — 未知Dolby Vision级别
- DolbyVisionProfileDvavPen — 基于AV1编解码器的Dolby Vision配置文件。
- DolbyVisionProfileDvavPer — 基于AV1编解码器的Dolby Vision配置文件。
- DolbyVisionProfileDvavSe — 基于AVC编解码器的Dolby Vision配置文件。
- DolbyVisionProfileDvheDen — 基于8位HEVC编解码器的Dolby Vision配置文件。
- DolbyVisionProfileDvheDer — 基于8位HEVC编解码器的Dolby Vision配置文件。
- DolbyVisionProfileDvheDtb — 基于HEVC编解码器的Dolby Vision配置文件。
- DolbyVisionProfileDvheDth — 基于10位HEVC编解码器的Dolby Vision配置文件。
- DolbyVisionProfileDvheDtr — 基于HEVC编解码器的Dolby Vision配置文件。
- DolbyVisionProfileDvheSt — 基于HEVC编解码器的Dolby Vision配置文件。
- DolbyVisionProfileDvheStn — 基于HEVC编解码器的Dolby Vision配置文件。
- DolbyVisionProfileUnknown — 未知Dolby Vision配置文件
- H263Level10 — H263级别1.0
- H263Level20 — H263级别2.0
- H263Level30 — H263级别3.0
- H263Level40 — H263级别4.0
- H263Level50 — H263级别5.0
- H263Level60 — H263级别6.0
- H263Level70 — H263级别7.0
- H263LevelUnknown — 未知H263级别
- H263ProfileBackwardCompatible — H263向后兼容配置文件
- H263ProfileBaseline — H263基准配置文件
- H263ProfileH320Coding — H263 H320编码配置文件
- H263ProfileHighCompression — H263高压缩配置文件
- H263ProfileHighLatency — H263高延迟配置文件
- H263ProfileInterlace — H263隔行扫描配置文件
- H263ProfileInternet — H263互联网配置文件
- H263ProfileISWV2 — H263 ISWV2配置文件
- H263ProfileISWV3 — H263 ISWV3配置文件
- H263ProfileUnknown — 未知H263配置文件
- HEVCHighTierLevel4 — HEVC高级别4
- HEVCHighTierLevel41 — HEVC高级别4.1
- HEVCHighTierLevel5 — HEVC高级别5
- HEVCHighTierLevel51 — HEVC高级别5.1
- HEVCHighTierLevel52 — HEVC高级别5.2
- HEVCHighTierLevel6 — HEVC高级别6
- HEVCHighTierLevel61 — HEVC高级别6.1
- HEVCHighTierLevel62 — 高级别6.2
- HEVCLevelUnknown — 未知HEVC级别
- HEVCMainTierLevel1 — HEVC主级别1
- HEVCMainTierLevel2 — HEVC主级别2
- HEVCMainTierLevel21 — HEVC主级别2.1
- HEVCMainTierLevel3 — HEVC主级别3
- HEVCMainTierLevel31 — HEVC主级别3.1
- HEVCMainTierLevel4 — HEVC主级别4
- HEVCMainTierLevel41 — HEVC主级别4.1
- HEVCMainTierLevel5 — HEVC主级别5
- HEVCMainTierLevel51 — HEVC主级别5.1
- HEVCMainTierLevel52 — HEVC主级别5.2
- HEVCMainTierLevel6 — HEVC主级别6
- HEVCMainTierLevel61 — HEVC主级别6.1
- HEVCMainTierLevel62 — HEVC主级别6.2
- HEVCProfileMain — HEVC主级别
- HEVCProfileMain10 — HEVC主10配置文件
- HEVCProfileMain10HDR10 — HEVC HDR主10配置文件
- HEVCProfileMain10HDR10Plus — HEVC HDR10+主10配置文件
- HEVCProfileMainStill — HEVC主静态图片配置文件
- HEVCProfileUnknown — 未知HEVC配置文件
- MPEG2LevelH14 — MPEG2高级别1440
- MPEG2LevelHL — MPEG2高级别
- MPEG2LevelHP — MPEG2级别HP
- MPEG2LevelLL — MPEG2低级别
- MPEG2LevelML — MPEG2主级别
- MPEG2LevelUnknown — 未知MPEG2级别
- MPEG2Profile422 — MPEG2 4:2:2配置文件
- MPEG2ProfileHigh — MPEG2高配置文件
- MPEG2ProfileMain — MPEG2主配置文件
- MPEG2ProfileSimple — MPEG2简单配置文件
- MPEG2ProfileSNR — MPEG2 SNR可扩展配置文件
- MPEG2ProfileSpatial — MPEG2空间可扩展配置文件
- MPEG2ProfileUnknown — 未知MPEG2配置文件
- MPEG4Level0 — MPEG4级别0
- MPEG4Level0b — MPEG4级别0b
- MPEG4Level1 — MPEG4级别1
- MPEG4Level2 — MPEG4级别2
- MPEG4Level3 — MPEG4级别3
- MPEG4Level3b — MPEG4级别3b
- MPEG4Level4 — MPEG4级别4
- MPEG4Level4a — MPEG4级别4a
- MPEG4Level5 — MPEG4级别5
- MPEG4Level6 — MPEG4级别6
- MPEG4LevelUnknown — 未知MPEG4级别
- MPEG4ProfileAdvancedCoding — MPEG4高级编码配置文件
- MPEG4ProfileAdvancedCore — MPEG4高级核心配置文件
- MPEG4ProfileAdvancedRealTime — MPEG4高级实时配置文件
- MPEG4ProfileAdvancedScalable — MPEG4高级可扩展配置文件
- MPEG4ProfileAdvancedSimple — MPEG4高级简单配置文件
- MPEG4ProfileBasicAnimated — MPEG4基本动画配置文件
- MPEG4ProfileCore — MPEG4核心配置文件
- MPEG4ProfileCoreScalable — MPEG4核心可扩展配置文件
- MPEG4ProfileHybrid — MPEG4混合配置文件
- MPEG4ProfileMain — MPEG4主配置文件
- MPEG4ProfileNbit — MPEG4 Nbit配置文件
- MPEG4ProfileScalableTexture — MPEG4可扩展纹理配置文件
- MPEG4ProfileSimple — MPEG4简单配置文件
- MPEG4ProfileSimpleFace — MPEG4简单人脸配置文件
- MPEG4ProfileSimpleFBA — MPEG4简单FBA配置文件
- MPEG4ProfileSimpleScalable — MPEG4简单可扩展配置文件
- MPEG4ProfileUnknown — 未知MPEG4配置文件
- VP8LevelUnknown — 未知VP8级别
- VP8LevelVersion0 — VP8级别版本0
- VP8LevelVersion1 — VP8级别版本1
- VP8LevelVersion2 — VP8级别版本2
- VP8LevelVersion3 — VP8级别版本3
- VP8ProfileMain — VP8主配置文件
- VP8ProfileUnknown — 未知VP8配置文件
- VP9Level1 — VP9级别1
- VP9Level11 — VP9级别1.1
- VP9Level2 — VP9级别2
- VP9Level21 — VP9级别2.1
- VP9Level3 — VP9级别3
- VP9Level31 — VP9级别3.1
- VP9Level4 — VP9级别4
- VP9Level41 — VP9级别4.1
- VP9Level5 — VP9级别5
- VP9Level51 — VP9级别5.1
- VP9Level52 — VP9级别5.2
- VP9Level6 — VP9级别6
- VP9Level61 — VP9级别6.1
- VP9Level62 — VP9级别6.2
- VP9LevelUnknown — 未知VP9级别
- VP9Profile0 — VP9配置文件0
- VP9Profile1 — VP9配置文件1
- VP9Profile2 — VP9配置文件2
- VP9Profile2HDR — 适用于HDR的VP9配置文件2
- VP9Profile2HDR10Plus — 适用于HDR10+的VP9配置文件2
- VP9Profile3 — VP9配置文件3
- VP9Profile3HDR — 适用于HDR的VP9配置文件3
- VP9Profile3HDR10Plus — 适用于HDR10+的VP9配置文件3
- VP9ProfileUnknown — 未知VP9配置文件
Last updated: 2026年7月22日

