メディアアプリの全般的な要件
VegaのメディアストリーミングアプリがAmazonアプリストアの認定に合格するには、以下の一般的なガイドラインと要件に準拠する必要があります。
アプリがバックグラウンドに移行したときにメディアプレーヤーのリソースを解放する方法
アプリは、ライフサイクルマネージャー(LCM)によってバックグラウンドにプッシュされたときに、使用されていないメディアリソース(具体的にはメディア再生関連のリソース)を解放する必要があります。その際の一般的なガイダンスを以下に列挙します。VODコンテンツを再生する場合では、アプリはメディアリソースを解放し、ビデオ(Movie)またはコンテンツの詳細ページに戻る必要があります。アプリをフォアグラウンドに戻したときに、ユーザーが中断したところからすぐに再生を再開できるようにするには、アプリがライブコンテンツやVODコンテンツの再生のコンテキストを保持している必要があります。
アプリはVideoPlayerを初期化解除するか、レンダーツリーからVideoコンポーネントをマウント解除することで、メディアリソースを解放できます。
await shakaPlayer.detach();
await videoPlayer.deinitialize();
await shakaPlayer.unload();{}
await shakaPlayer.destroy();
現在の状態の検出について詳しくは、AppState(英語のみ)を参照してください。
コーデック選択
- オーディオデバイスの機能に応じたコーデック選択
アプリは、テレビやAVRなどの接続されているHDMIディスプレイデバイスのオーディオ機能に応じて、再生に適したオーディオコーデック(AACまたはドルビー)を選択する必要があります。
- BluetoothヘッドセットとHDMI出力の間の切り替え
ユーザーは再生中に、BluetoothヘッドセットとHDMI出力の間で切り替えを行うことがあります。そのため、ディスプレイデバイスでサポートされているオーディオコーデックが変更される可能性があります。たとえば、ドルビーは、HDMI出力ではサポートされていますが、Bluetoothヘッドセットではサポートされていません。アプリはこのオーディオ出力機能の変化を検出し、MSEプレーヤーのオーディオコーデックスイッチをトリガーする必要があります。
シーケンスモードの適用
一般的に、HLSおよびMPEG2TSストリーミングコンテンツにはシーケンスモードを使用することをお勧めします。
HLSアダプティブストリームでMPEGTSコンテンツを再生する場合は、次のサンプルコードに示すようにシーケンスモードフラグを有効にします。
const initializeShaka = () => {
console.log('app: in initializePlayer() index = ', nextContent.index);
if (videoPlayer.current !== null) {
player.current = new ShakaPlayer(videoPlayer.current, playerSettings);
}
if (player.current !== null) {
player.current.load(content[nextContent.index], AUTOPLAY);
player.current.player.configure('manifest.hls.sequenceMode', true);
}
マニフェストの要件
メディア再生を正しくサポートするには、manifest.tomlファイルに以下のエントリが必要です。
[wants]
[[wants.service]]
id = "com.amazon.mediametrics.service" # 指標サービスで必要
[[wants.service]]
id = "com.amazon.media.server"
[[wants.service]]
id = "com.amazon.gipc.uuid.*"
[[wants.service]]
id = "com.amazon.media.playersession.service"
[[wants.privilege]]
id = "com.amazon.devconf.privilege.accessibility" # 字幕で必要
[[wants.service]]
id = "com.amazon.mediabuffer.service"
[[wants.service]]
id = "com.amazon.mediatransform.service"
[offers]
[[offers.service]]
id = "com.amazon.gipc.uuid.*"
再生でオーディオ機能を使用するには、manifest.tomlファイル内で以下のオーディオ管理サービスをリクエストしておく必要があります。
- com.amazon.audio.stream - すべてのPlayback/Recordクライアント
- com.amazon.audio.control - すべてのAudioManager APIクライアント
- com.amazon.audio.system - すべてのAudioManager APIクライアント
[[wants.service]]
id = "com.amazon.audio.stream"
[[wants.service]]
id = "com.amazon.audio.control"
[[wants.service]]
id = "com.amazon.audio.system"
セキュアビデオデコーダーセッションの制限
Vega OSをベースにした最初のFire TVは、1つのセキュアビデオデコーダーインスタンスのみをサポートします。ビデオを連続して安全に再生するには、2番目のvideoPlayerインスタンスを初期化する前に最初のインスタンスの初期化を解除する必要があります。
1番目のVideoPlayerインスタンスの初期化を解除しないと、2番目の再生は失敗します。
次のコードサンプルは、VideoPlayerインスタンスの初期化を解除して新しいインスタンスを起動する方法を示しています。
// 1番目の安全なビデオ再生を開始します。
// VideoPlayerを初期化します。
let videoPlayer1 = new VideoPlayer();
await videoPlayer1.initialize();
// 次に、再生します。完了後、プレーヤーの初期化を解除します。
// JSプレーヤーの読み込みを解除します
// VideoPlayerの初期化を解除します。Promiseを待機します
await videoPlayer1.deinitialize();
// 1番目の安全なビデオ再生の初期化を解除した後、2番目の安全なビデオ再生を開始します。
// VideoPlayerを初期化します。
let videoPlayer2 = new VideoPlayer();
await videoPlayer2.initialize();
// 次に、再生します。完了後、プレーヤーの初期化を解除します。
// JSプレーヤーの読み込みを解除します
// VideoPlayerの初期化を解除します。Promiseを待機します
await videoPlayer2.deinitialize();
Last updated: 2025年9月30日

