as

Settings
Sign out
Notifications
Alexa
Amazonアプリストア
AWS
ドキュメント
Support
Contact Us
My Cases
開発
設計と開発
公開
リファレンス
サポート

@amazon-devices/keplermediadescriptor

@amazon-devices/keplermediadescriptor

Keplerメディア記述子APIは、アプリがプラットフォームからデバイスのコーデック機能を照会できるようにする機能を提供します。APIは接続デバイスのサポートも考慮し、デバイスの制限に応じて機能を返します。

開始の手順

前提条件

Keplerメディア記述子APIは以下のインターフェイスに依存しています。

  1. kepler_audio_interface
  2. kepler_graphics_interface

Kepler SDKのインストール方法については、Kepler SDKのセットアップを参照してください。

セットアップ

package.jsonファイルのdependenciesセクションに、以下のライブラリ依存関係を追加します。

クリップボードにコピーしました。

"@amazon-devices/keplermediadescriptor": "~1.0.0",

使用方法

このパッケージを使用すると、デバイスのビデオおよびオーディオ機能を取得し、それに応じたコンテンツを再生できます。一般的なユースケースは以下のとおりです。

  1. デバイスが特定のビデオ/オーディオコーデックをサポートしているかどうかを確認する。
  2. 特定のビデオコーデックについて、デバイスが特定のプロファイルレベル、フレームレート、ビットレート、解像度をサポートしているかどうかを確認する。
  3. デバイスが特定のMIMEタイプをサポートしているかどうかを確認する。
  4. 接続されているデバイス(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_UNSPECIFIEDCodecMimeType.MIME_AUDIO_UNSPECIFIEDをワイルドカードとして使用してください。## モジュール

Last updated: 2025年10月2日