@amazon-devices/keplermediadescriptor
Keplerメディア記述子APIは、アプリがプラットフォームからデバイスのコーデック機能を照会できるようにする機能を提供します。APIは接続デバイスのサポートも考慮し、デバイスの制限に応じて機能を返します。
開始の手順
前提条件
Keplerメディア記述子APIは以下のインターフェイスに依存しています。
Kepler SDKのインストール方法については、Kepler SDKのセットアップを参照してください。
セットアップ
package.jsonファイルのdependenciesセクションに、以下のライブラリ依存関係を追加します。
"@amazon-devices/keplermediadescriptor": "~1.0.0",
使用方法
このパッケージを使用すると、デバイスのビデオおよびオーディオ機能を取得し、それに応じたコンテンツを再生できます。一般的なユースケースは以下のとおりです。
- デバイスが特定のビデオ/オーディオコーデックをサポートしているかどうかを確認する。
- 特定のビデオコーデックについて、デバイスが特定のプロファイルレベル、フレームレート、ビットレート、解像度をサポートしているかどうかを確認する。
- デバイスが特定のMIMEタイプをサポートしているかどうかを確認する。
- 接続されているデバイス(Fire TV StickのユースケースではTV/AVRなど)がドルビーコーデックをサポートしているかどうかを確認する。
パッケージからの必要なインターフェイスのインポート
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オブジェクトの準備が整ったら、照会メソッドを呼び出すことができます。返された機能配列に少なくとも1つのエントリがある場合は、リクエストした属性がデバイスでサポートされていることを意味します。
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);
ドルビーサポートの確認
queryMediaCapabilities()メソッドを使用して、デバイスのドルビーサポートを確認できます(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("デバイスはドルビーデジタルオーディオをサポートしています");
}
返されたオーディオ機能の読み取り
// 機能をループ処理します
for (let index = 0; index < audioCaps.length; index++) {
let audioCapability = audioCaps[index];
if (audioCapability.decoderFeaturesCapabilities.decryptionSupported) {
console.log("コーデックでは復号化がサポートされています");
}
}
よくある質問(FAQ)
- Q: デバイスでサポートされているすべてのコーデックを1回の呼び出しで取得できますか?
CodecMimeType.MIME_VIDEO_UNSPECIFIEDとCodecMimeType.MIME_AUDIO_UNSPECIFIEDをワイルドカードとして使用してください。## モジュール
- index
- KeplerMediaDescriptor
- MediaCapabilitiesImpl
- turbo-modules/KeplerMediaDescriptorInterface
- turbo-modules/KeplerMediaDescriptorInterface
- turbo-modules/KeplerMediaDescriptorTurboModule
- turbo-modules/KeplerMediaDescriptorTurboModule
- turbo-modules/LevelValues
- turbo-modules/LevelValues
- turbo-modules/NativeInterface
- turbo-modules/NativeInterface
- turbo-modules/ProfileValues
- turbo-modules/ProfileValues
Last updated: 2025年10月2日

