Amazon Developer

as

Settings
Sign out
Notifications
Alexa
Amazonアプリストア
Ring
AWS
ドキュメント
Support
Contact Us
My Cases
開発
設計と開発
公開
リファレンス
サポート
メインコンテンツへスキップ
Vega W3C Media APIは、W3C準拠のReact Nativeコンポーネント、JavaScriptクラスコンポーネント、JavaScriptメソッド、およびJavascriptインターフェースを提供します。このAPIを使用して、ギャップレスなエピソード再生やメインコンテンツの再生中へのシームレスな広告挿入など、さまざまな再生体験を構築できます。 このAPIは、HTMLMediaElement、Media Source Extension、Encrypted Media Extensionの各メソッドを(ポリフィルとして)実装しています。

開始の手順

セットアップ

  1. package.jsonファイルのdependenciesセクションに、以下のライブラリ依存関係を追加します。
  1. ターミナルウィンドウを開き、アプリフォルダに移動します。npmを実行して、このパッケージをアプリにインストールします。
  2. babel.config.jsファイルを更新します。更新しない場合、実行時にアプリから「ReferenceError: Property ‘React’ doesn’t exist」という例外がスローされます。
  3. manifest.tomlに、以下の権限を追加します。

使用方法

React NativeのVideoコンポーネント

Videoは、HTMLMediaElementインターフェイスを継承するHTMLVideoElementインターフェイスを実装するReact Nativeコンポーネントです。 このコンポーネントを使用すると、オーディオとビデオの両方を含むMP4、MPEG DASH、HLSなどの形式のオーディオおよびビデオコンテンツを再生できます。 このコンポーネントは、デフォルトのメディアコントロールGUIをサポートしています。 コンポーネントをレンダーツリーに追加し、その参照を保存します。この参照に対してHTMLMediaElementやHTMLVideoElementのメソッドを呼び出します。このコンポーネントでは、ビデオを画面上に表示する前にアプリでコンテンツをプレバッファリングすることはできません。プレバッファリングが必要な場合は、VideoPlayer JavaScriptクラスコンポーネントを使用します。

VideoPlayerコンポーネント

VideoPlayerコンポーネントは、HTMLMediaElementインターフェイスを継承するHTMLVideoElementインターフェイスを実装します。 HTMLVideoElementはTypeScriptクラスであり、React Nativeコンポーネントではありません。 デフォルトでは、ビデオは画面上にレンダリングされず、メディアコントロールのGUIも表示されません。 アプリは、独自のメディアコントロールUIを構築し、再生エクスペリエンスを制御する必要があります。 アプリは、VideoPlayerのインスタンスを作成し、それを使用して、画面上にビデオをレンダリングせずに、コンテンツのバッファリングを開始する必要があります。 ビデオを画面に表示するには、アプリで次の処理を行う必要があります。
  • KeplerVideoSurfaceView React Nativeコンポーネントをレンダーツリーに追加する
  • onSurfaceViewCreatedイベントを受信する
  • イベントコールバックで取得したサーフェスハンドルを、setSurfaceHandleメソッドを介してVideoPlayerに渡す

React NativeのAudioコンポーネント

Audioは、HTMLMediaElementインターフェイスを継承するHTMLAudioElementインターフェイスを実装するReact Nativeコンポーネントです。 オーディオのみを含むMP3やMPEG DASH/HLSなどのオーディオを再生するには、このコンポーネントを使用します。 このコンポーネントは、デフォルトのメディアコントロールGUIをサポートしています。 コンポーネントをレンダーツリーに追加し、その参照を保存します。 この参照に対してHTMLMediaElementやHTMLAudioElementのAPIを呼び出します。 このコンポーネントを使用して、オーディオをデバイス上で再生する前にアプリでコンテンツをプレバッファリングすることはできません。プレバッファリングが必要な場合は、AudioPlayer JavaScriptクラスコンポーネントを使用します。

AudioPlayerコンポーネント

AudioPlayerコンポーネントは、HTMLMediaElementインターフェイスを継承するHTMLAudioElementインターフェイスを実装します。 AudioPlayerはTypeScriptクラスであり、React Nativeコンポーネントではありません。 オーディオのみを含むMP3やMPEG DASH/HLSなどの形式を再生するには、このコンポーネントを使用します。 アプリでは、AudioPlayerのインスタンスを作成し、それを使用して、再生を開始せずにコンテンツのバッファリングを開始する必要があります。 メディアコントロールのGUIは表示されません。アプリには、独自のメディアコントロールUIを構築し、再生エクスペリエンスを制御することが求められます。

KeplerVideoSurfaceView

KeplerVideoSurfaceViewは、画面上にビデオフレームをレンダリングするReact Nativeコンポーネントです。 KeplerVideoSurfaceViewを使用できるのは、VideoPlayerをプレバッファリングモードで使用しており、複数のプレーヤーが異なるコンテンツを同時にプリバッファリングする場合のみです。 アプリでは、onSurfaceViewCreatedイベントコールバックで渡されたサーフェスハンドルを、画面上にレンダリングする必要のあるビデオプレーヤーインスタンスに関連付けます。

KeplerCaptionsView

KeplerCaptionsViewは、クローズドキャプションと字幕を画面上にレンダリングするReact Nativeコンポーネントです。このコンポーネントを使用できるのは、VideoPlayerコンポーネントやAudioPlayerコンポーネントを使用してプレバッファリングモードで動作している場合のみです。 アプリは、onCaptionViewCreatedイベントコールバックで渡されたキャプションハンドルを、setCaptionViewHandleメソッドを通じてVideoPlayerとAudioPlayerに関連付けて、プレーヤーがキャプションや字幕を画面上にレンダリングできるようにします。 現在、キャプションはデフォルトではレンダリングされません。 レンダリングを有効にするには、以下のコマンドを実行します。
以下の例は、このコンポーネントの使用方法を示しています。

HTMLMediaElement

HTMLMediaElementは、Vega向けReact Nativeアプリが再生を制御するために使用するメインのプレーヤーインターフェイスです。このインターフェイスは、React NativeのVideoおよびAudioコンポーネントと、TypeScriptのVideoPlayerおよびAudioPlayerコンポーネントに実装されています。 詳細については、https://html.spec.whatwg.org/multipage/media.html(英語のみ)を参照してください。 以下で説明するように、アプリはコンテンツのタイプ(アダプティブまたは非アダプティブ)に応じて2つのモードで再生を開始できます。
  • URLモードによる非アダプティブストリーミング形式(MP4、MP3、MKVメディアファイルなど)の再生。AudioコンポーネントとVideoコンポーネントは、「src」属性により、MP4、MP3、MKVなどの非アダプティブストリーミング形式の再生をサポートします。
    • src属性にメディアURLを設定します。 アプリで「src」属性にコンテンツのURLを設定します。 `video.src = [some url] or audio.src = [some url]`
  • Media Source Extension(MSE)モードによるアダプティブストリーミング形式(HLS、MPEG DASHなど)の再生。MSE APIは、HLSやMPEG DASHなどのアダプティブストリーミング形式をサポートしています。このAPIを使用すると、アプリでHLSやDASHなどのアダプティブストリーミングコンテンツのメディアセグメントをプレーヤーに挿入できます。アプリは、マニフェストをダウンロードして解析し、コンテンツがサポートするさまざまなビットレート品質レベルとバリエーションを判断します。アプリは、利用可能なネットワーク帯域幅に基づいて、適切な品質レベルのメディアセグメントをダウンロードします。続けて、MediaSourceメソッドとSourceBufferメソッドを介してプレーヤーにそのメディアセグメントを渡します。 これらのAPIの使用方法の詳細については、https://www.w3.org/TR/media-source-2/(英語のみ)を参照してください。
    • MediaSourceオブジェクトを作成します。
      let mediaSource = new MediaSource();
    • MediaSourceのBlob URLを作成します。
      let url = URL.createObjectURL(mediaSource)
    • MediaSourceをビデオコンポーネントまたはオーディオコンポーネントに関連付けます。
      video.src = url or audio.src = url
    • MIMEタイプに基づいてSourceBufferを追加します。
      let sourceBuffer = mediaSource.addSourceBuffer(mimeType)
    メディアセグメントをダウンロードしてSourceBufferに追加します。

一般的なメディア操作

HTMLMediaElementのメソッドを通じてメディア再生やその他の一般的な操作を制御するには、以下に示すように、React NativeのAudioコンポーネントまたはVideoコンポーネントの参照を使用します。

再生の開始

video.play()またはaudio.play()

再生の一時停止

video.pause()またはaudio.pause()

現在の再生時間の取得

現在の再生位置を取得するには、currentTime属性を読み取ります。 console.log('${video.currentTime}');またはconsole.log('${audio.currentTime}');

目的の位置へのシーク

目的の位置にシークするには、currentTime属性を設定します。 video.currentTime = seekPosition;またはaudio.currentTime = seekPosition;

イベントの処理

Vega W3C Media APIでは、W3Cのメディア仕様に記載されているすべてのイベントがサポートされています。VideoまたはAudioにイベントハンドラーを登録するには、以下の2つの方法があります。
  • React NativeのAudio/Videoコンポーネントのプロパティを使用します。サポートされているプロパティの一覧については、MediaPropsを参照してください。たとえば、endedのイベントハンドラーは次のように登録できます。
  1. EventTarget addEventListener()メソッドを使用します。 VideoコンポーネントとAudioコンポーネントには、EventTargetインターフェイスの2つのメソッド、addEventListenerとremoveEventListenerが実装されています。 アプリでは、これらのメソッドを使用して、React NativeのAudio/Videoコンポーネントの参照にイベントハンドラーを登録できます。たとえば、次のようにイベントハンドラーを登録できます。 video.addEventListener("ended", onEnded);
React NativeのAudioコンポーネントとVideoコンポーネントのほかに、非React Nativeコンポーネントにも、AudioTrackList、VideoTrackList、MediaSource、SourceBuffer、SourceBufferListなど、イベントを生成するものがあります。これらのイベントは、EventTargetのaddEventListenerメソッドによって処理されます。これらのメソッドはすべて、addEventListenerをサポートしています。 注:これらのメソッドのEventHandler属性はサポートされません。 次の例は、VideoTrackListのaddtrackイベントを処理する方法を示しています。 video.videoTracks.addEventListener("addtrack", onVideoTrackAdded); また、MediaSourceのsourceopenイベントを処理するには、次のようにします。 mediasource.addEventListener("sourceopen", onMediaSourceOpen) Encrypted Media Extensionは、MSEモードでのみDRMで保護された再生をサポートします。詳細については、https://w3c.github.io/encrypted-media/(英語のみ)を参照してください。

サポート対象外のHTMLMediaElementの機能

  • networkState
  • load
  • canPlayType - すべてのタイプをサポートしていることを示します。
  • fastSeek - currentTimeの設定によるシークと同じ動作をします。
  • getStartDate
  • addTextTrack
  • preload
  • defaultPlaybackRate、playbackRate
  • preservesPitch
  • loop
  • ボリューム、ミュート

サポート対象外のMedia Source Extension(MSE)の機能

MediaSource API(https://www.w3.org/TR/media-source-2/#mediasource(英語のみ))

  • EventHandler属性はサポートされません。アプリでは、MediaSourceに実装されているEventTargetインターフェイスのaddEventListenerメソッドを使用してイベントハンドラーを登録できます。
  • audioTracks、videoTracks、textTracks

SourceBuffer API(https://www.w3.org/TR/media-source-2/#sourcebuffer(英語のみ))

  • changeType
  • EventHandler - 以下の属性はサポートされません。現在、アプリでは、SourceBufferに実装されているEventTargetインターフェイスのaddEventListenerメソッドを使用してイベントハンドラーを登録できます。

SourceBufferList API(https://www.w3.org/TR/media-source-2/#sourcebufferlist(英語のみ))

  • 以下のEventHandler属性はサポートされません。現在、アプリでは、SourceBufferListに実装されているEventTargetインターフェイスのaddEventListenerメソッドを使用できます。

関連トピック

APIリファレンス

クラス

インターフェイス

列挙型

  • AppendMode - 追加情報については、以下を参照してください。
  • AudioContentType - オーディオコンテンツのタイプを表します。
  • AudioUsageType - オーディオ使用タイプを表します。
  • EndOfStreamError - 追加情報については、以下を参照してください。
  • ReadyState - 追加情報については、以下を参照してください。

型エイリアス

  • BufferSource - 詳細については、以下を参照してください。
  • CanPlayTypeResult -「未定」:
  • ColorGamut - VideoConfigurationには、次のいずれかのタイプを含めることができます。
  • HdrMetadataType - HdrMetadataTypeが存在する場合、指定されたタイプのHDRメタデータを解釈する機能を表します。
  • InitDataType - 暗号化関連の初期化データ形式を指定します。
  • MediaDecodingType - MediaDecodingConfigurationには次の3つのタイプがあります。
  • MediaKeySessionType - メディアキーセッションのタイプを指定します。
  • MediaKeysRequirement - 必須:
  • MediaPlayerDeInitStatus - このファイルはATVKeplerNFPBindingsInterface vmpf-devブランチからコピーされます。
  • Robustness - SECURE:セキュアなビデオバッファーを使用します。
  • TextTrackKind - テキストトラックのタイプを表します。
  • TextTrackMode - テキストトラックの表示モードを表します。
  • TransferFunction - VideoConfigurationには、次のいずれかのタイプを含めることができます。

関数


最終更新日 2026年10月26日