# 機能(アプリとSDKで利用可能)
# インテント起動(動画再生)
プレイヤーは、暗黙的インテントにより起動し、与えられたパラメータで動画の再生を開始できます。
インテント起動用URL
<scheme>://<cdn_domain>/<content_path>?<query_string>
URLの要素は以下の通りです。
- <scheme>
- インテント起動用URLスキーム
- <cdn_domain>
- CDNのドメイン
- <content_path>
- メディアコンテンツのパス
再生するメディアコンテンツのリソースへのアクセスにクエリパラメータを設定する必要がある場合、インテント起動パラメータのvideoqueryを用い設定してください。 - <query_string>
- インテント起動パラメータ
「メディアコンテンツのパス」は再生するメディアコンテンツに応じた適切な拡張子としてください。
- HLSコンテンツ
拡張子が".m3u8" - MP4コンテンツ
拡張子が".mp4" - DASH(Widevine)コンテンツ, DASH(Clear)コンテンツ
拡張子が".mpd"
インテント起動のアクション
Androidの場合、インテント起動のアクションはACTION_VIEWを指定してください。
インテント起動パラメータ
プレイヤーにパラメータを指定する方法は3通りあります。これらを総称してインテント起動パラメータと呼びます。
- インテント起動パラメータ(initparams)
インテント起動パラメータ"initparams"に各パラメータをまとめたJSON形式の文字列を指定します。 - インテント起動パラメータ(remoteparams)
インテント起動パラメータ"remoteparamsurl"にJSONファイルのURLを指定します。JSONの書式はインテント起動パラメータ(initparams)と同様です。 - インテント起動パラメータ(querystring)
インテント起動用URLの<query_string>で各パラメータ(initparams、remoteparamsを除く)を指定します。インテント起動パラメータ(querystring)は非推奨です。
指定方法の優先度は記載の順に高く、優先度の高いパラメータが指定されている場合、優先度の低いパラメータを無視します。以下に各インテント起動パラメータを記載します。
# インテント起動パラメータ(initparams/remoteparames)
インテント起動パラメータ(initparams/remoteparames)の設定項目は以下の通りです。
- videoId: 文字列
- ビデオID
使用可能な文字列は、半角英数および記号 `_-` です。 以下の用途に使用します。
- ライセンス取得(DASH(Widevine))
- コンテンツダウンロード
- sessionId: 文字列
- セッションID
- mode: 文字列
- 配信モード
- streaming:ストリーミング配信
- download:ダウンロードもしくはダウンロードしたコンテンツの再生
- protocol: 文字列
- コンテンツリソースへアクセスする際のプロトコル
- https
- http
- videoQuery: 文字列
- コンテンツリソースへのアクセスに必要なパラメータ
クエリ文字列形式で指定してください。 - startPosition: 数値
- 再生開始位置(秒)
ストリーミング配信の場合にのみ利用します。0以上の値を指定してください。
デフォルト値:0 - title: 文字列
- コンテンツタイトル
文字コードはUTF-8としてください。 - playerControl: 数値
- 表示制御フラグ
プレイヤーのコントロール部分(タイトル、シークバーなど)を制御(表示/非表示など)するために使用します。1が指定された場合、シークバーを非表示にします。
デフォルト値:0 - deviceId: 文字列
- デバイス識別子
プレイヤーが用いるデバイス識別子を指定する場合に使用します。詳細はデバイス識別子を参照してください。 - closePlayer: 数値
- プレイヤー終了フラグ
インライン再生時、動画の再生が終了した際にプレイヤーを終了させる場合に使用します。1が指定された場合、動画の再生が終了した際にプレイヤーを終了し、自動で動画再生開始前の画面に戻ります。
デフォルト値:0 - extViewUrl: 文字列(URL)
- インライン再生時にインラインWebViewで表示するURL
このパラメータが指定された場合はインライン再生を行い、指定されていない場合はフルスクリーン再生を行います。詳細はインライン再生を参照してください。 - keySystem: Object
- ライセンス設定
- .ticket: 文字列
- チケット
ライセンスを取得する際のワンタイムトークンとして使用します。
- beacon: Object
- ビーコン設定
- .params: 文字列
- ビーコン送信時に付与する固定パラメータ
クエリ文字列形式で指定してください。
- googleCast: Object
- Cast設定
- .castVideoId: 文字列
- CastビデオID
ULIZA Google Cast Senderにおいて、Castするコンテンツ情報を取得するための識別子として使用します。CastビデオIDが含まれない場合はwvstreamid(ビデオID)で指定された値をCastビデオIDとして使用します。
- advertising: Object
- 広告設定
- videoAnalytics: Object
- ULIZA Video Analytics (Cloud)カスタムデータ
詳細はULIZA Video Analytics (Cloud)連携を参照してください。 - .enable: 真偽値
- .trackingId: 文字列
- .userId: 文字列
- .contentName: 文字列
- .contentTitle: 文字列
- .contentCategory: 文字列
- .takeOverSession: 真偽値
- seekPreview: Object
- シークプレビュー用のパラメータ
詳細はシークプレビューを参照してください。 - .url: 文字列(URL)
- enlargement: Object
- 拡大表示用のパラメータ
詳細は拡大表示を参照してください。 - .enable: 真偽値
- .maxRate: 数値
- 100以上700以下の値を指定してください。
- playbackRate: Object
- 倍速再生用のパラメータ
詳細は倍速再生を参照してください。 - .values: 文字列の配列
- overlayWebView: Object
- オーバーレイWebView用のパラメータ
詳細はオーバーレイWebViewを参照してください。 - .url: 文字列(URL)
- .visibility: 文字列
- .registerCallback: 文字列
- subtitles: Object
- 字幕用のパラメータ
詳細は字幕を参照してください。 - .src: Object
- .label: 文字列
- .url: 文字列
- .fontFamily: 文字列の配列
- .color: 文字列の配列
- .backgroundColor: 文字列の配列
- backgroundPlayback: Object
- バックグラウンド再生設定
- .disable: 数値
- バックグラウンド再生無効化フラグ
バックグランド再生を無効にする場合に使用します。1が指定された場合、バックグラウンド再生を無効化します。
デフォルト値:0
- playlist: Object
- 次前動画用のパラメータ
以下にインテント起動パラメータ(initparams/remoteparames)の例を示します。
例)
{
"videoId": "videoId",
"sessionId": "sessionId",
"mode": "streaming",
"protocol": "https",
"videoQuery": "videoQuery",
"startPosition": 10,
"title": "title",
"playerControl": 0,
"deviceId": "deviceId",
"closePlayer": 1,
"extViewUrl": "https://host.foo.com/",
"keySystem": {
"ticket": "ticket"
},
"beacon": {
"params": "key1=va1"
},
"googleCast": {
"castVideoId": "castVideoId"
},
"advertising": {
"url": "https://host.foo.com/vmap.xml",
"midrollMax": 2
},
"videoAnalytics": {
"enable": true,
"trackingId": "00000000-0000-0000-0000-000000000000",
"userId": "user_id",
"contentName": "content_name",
"contentTitle": "content_title",
"contentCategory": "content_category",
"takeOverSession": true
},
"seekPreview": {
"url": "https://host.foo.com/seekpreview/content01_preview_list.jpeg"
},
"enlargement": {
"enable": true,
"maxRate": 700
},
"playbackRate": {
"values": [0.5,1.0,1.6,2.0]
},
"overlayWebView": {
"url": "https://www.foo.com/aaa/bbb/top.html",
"visibility": "visible",
"registerCallback": "onEvent"
},
"subtitles": {
"src": [
{
"label": "jpn",
"url": "https://www.foo.com/jpn.vtt"
},
{
"label": "eng",
"url": "https://www.foo.com/eng.vtt"
}
],
"font_family": ["monospace"],
"color": ["0xffffffff"],
"background_color": ["0x1a1a1acc"]
},
"backgroundPlayback": {
"disable": 0
},
"playlist": {
"previousUrl": "customscheme://host.foo.com/path/contet1.mp4",
"nextUrl": " customscheme://host.foo.com/path/contet3.mp4"
}
}
# インテント起動パラメータ(querystring)
インテント起動パラメータ(querystring)の設定項目は以下の通りです。
- initparams: 文字列(JSON)
- インテント起動パラメータ(initparams)
2083文字以内で指定してください。URLエンコードしてください。 - remoteparamsurl: 文字列(URL)
- インテント起動パラメータ(remoteparams)のURL
各パラメータをまとめたjsonファイルのパス。URLエンコードしてください。 - wvstreamid: 文字列
- インテント起動パラメータ(initparams/remoteparames)のvideoIdを参照してください。使用可能な文字列は、半角英数および記号 `_-` です。
- sid: 文字列
- インテント起動パラメータ(initparams/remoteparames)のsessionIdを参照してください。
- mode: 文字列
- インテント起動パラメータ(initparams/remoteparames)のmodeを参照してください。
- protocol: 文字列
- インテント起動パラメータ(initparams/remoteparames)のprotocolを参照してください。
- videoquery: 文字列
- インテント起動パラメータ(initparams/remoteparames)のvideoQueryを参照してください。クエリ文字列形式で指定してください。URLエンコード※してください。
- start: 数値
- インテント起動パラメータ(initparams/remoteparames)のstartPositionを参照してください。0以上の値を指定してください。
- title: 文字列
- インテント起動パラメータ(initparams/remoteparames)のtitleを参照してください。URLエンコードしてください。
- playercontrol: 数値
- インテント起動パラメータ(initparams/remoteparames)のplayerControlを参照してください。
- deviceid: 文字列
- インテント起動パラメータ(initparams/remoteparames)のdeviceIdを参照してください。
- closeplayer: 数値
- インテント起動パラメータ(initparams/remoteparames)のclosePlayerを参照してください。
- extviewparams: 文字列(URL)
- インテント起動パラメータ(initparams/remoteparames)のextViewUrlを参照してください。URLエンコードしてください。
- ticket: 文字列
- インテント起動パラメータ(initparams/remoteparames)のticketを参照してください。
- beaconparams: 文字列
- インテント起動パラメータ(initparams/remoteparames)のbeacon->paramsを参照してください。クエリ文字列形式で指定してください。URLエンコード※してください。
- castvideoid: 文字列
- インテント起動パラメータ(initparams/remoteparames)のgoogleCast->castVideoIdを参照してください。
- aduri: 文字列(URL)
- インテント起動パラメータ(initparams/remoteparames)のadvertising->urlを参照してください。URLエンコードしてください。
- midrollmax: 数値
- インテント起動パラメータ(initparams/remoteparames)のadvertising->midrollMaxを参照してください。0以上の値を指定してください。
- seekpreview: 文字列(JSON)
- インテント起動パラメータ(initparams/remoteparames)のseekPreviewを参照してください。URLエンコードしてください。
- enlargement: 文字列(JSON)
- インテント起動パラメータ(initparams/remoteparames)のenlargementを参照してください。URLエンコードしてください。
- playbackrates: 文字列(JSON)
- インテント起動パラメータ(initparams/remoteparames)のplaybackRateを参照してください。URLエンコードしてください。
- overlaywebview: 文字列(JSON)
- インテント起動パラメータ(initparams/remoteparames)のoverlayWebViewを参照してください。URLエンコードしてください。
- subtitle: 文字列(JSON)
- インテント起動パラメータ(initparams/remoteparames)のsubtitlesを参照してください。URLエンコードしてください。
- disablebackgroundplayback: 数値
- インテント起動パラメータ(initparams/remoteparames)のbackgroundPlayback->disableを参照してください。
- previousUrl: 文字列(URL)
- インテント起動パラメータ(initparams/remoteparames)のpreviousUrlを参照してください。URLエンコードしてください。
- nextUrl: 文字列(URL)
- インテント起動パラメータ(initparams/remoteparames)のnextUrlを参照してください。URLエンコードしてください。
(※):各key/value("="を除く)は、それぞれURLエンコードされている必要があります。
例)
beaconparamsにkey1=%92l1("値1"をURLエンコードした文字列)を含める場合
※ 他パラメータは省略
customscheme://host.foo.com/path/contet.wvm?beaconparams=key1%3d%2592l1
上記beaconparamsの場合、以下のビーコンを送信します。
https://host.foo.com/path/beacon.php?key1=%92l1
# 環境変数取得
プレイヤーは、インテント起動によりインスタンスが生成された場合、環境変数取得URLから環境変数ファイルをダウンロードし環境変数を取得します。環境変数ファイルから取得した環境変数は、そのインスタンスにおいて、プレイヤーにハードコードされた環境変数を上書きします。
リクエスト
GET <envurl>?<query_string>
URLの要素は以下の通りです。
- <envurl>
- プレイヤーにハードコードされた環境変数ファイルのURL
- <query_string>
- 送信パラメータ
送信パラメータは以下の通りです。
- sid: 文字列
- セッションID
レスポンス
環境変数取得URLでダウンロードできる環境変数ファイルは、以下の値を指定できます。JSON形式の文字列で指定されている必要があります。
- wvdrmserver2: 文字列(URL)
- DASH(Widevine)コンテンツライセンス要求URL(License Proxy Server、またはCMS/Portal)
- homepage: 文字列(URL)
- WebViewで表示するデフォルト画面のURL
- logapi: 文字列(URL)
- ビーコン送信URL(クエリ文字列を除く)
- loginpage: 文字列(URL)
- WebViewで表示するログインページURL
- metaapi: 文字列(URL)
- 動画メタデータ取得URL(クエリ文字列を除く)
ダウンロードの場合にのみ利用します。 - ticketapi2: 文字列(URL)
- DASH(Widevine)コンテンツライセンスコントローラーURL(クエリ文字列を除く)
DASH(Widevine)コンテンツの全ての配信方式の再生において利用します。 - delapi: 文字列(URL)
- 動画削除通知URL(クエリ文字列を除く)
ダウンロードの場合にのみ利用します。 - googlecast_ulizareceiver_config: 文字列(URL)
- Receiver設定情報取得APIのURL
ULIZA Google Cast Senderでのみ利用します。 - googlecast_mediainfoapi: 文字列(URL)
- Cast情報取得APIのURL
ULIZA Google Cast Senderでのみ利用します。
以下にレスポンスの例を示します。
例)
{
"wvdrmserver2": "https://host.foo.com/api/license_dash.php",
"homepage": "https://host.foo.com/api/index.php",
"logapi": "https://host.foo.com/api/beacon.php",
"loginpage": "https://host.foo.com/api/login.php",
"metaapi": "https://host.foo.com/api/meta.php",
"ticketapi2": "https://host.foo.com/api/ticket_dash.php",
"delapi": "https://host.foo.com/api/delete.php",
"googlecast_ulizareceiver_config": "https://host.foo.com/api/cast_config.php",
"googlecast_mediainfoapi": "https://host.foo.com/api/cast_mediainfo.php"
}
# UI
# プレイヤーUI
プレイヤーの画面イメージは以下の通りです。
表示項目 Android
表示項目 iOS
- 動画表示領域
- 動画を表示する領域です。
- Castボタン
- Castの処理を開始します。
詳細はULIZA Google Cast Senderを参照してください。 - 戻るボタン
- 再生位置が固定秒数戻ります。
詳細は進む/戻るを参照してください。 - 再生/一時停止ボタン
- 再生/一時停止を切り替えます。
- リプレイボタン
- リプレイします。
詳細はリプレイUIを参照してください。 - 進むボタン
- 再生位置が固定秒数進みます。
詳細は進む/戻るを参照してください。 - 縦持ち通常表示ボタン
- 縦向きのレイアウトに切り替えます。
- ユーザーオプトアウトボタン
- ユーザーオプトアウト機能の有効/無効を切り替えます。
詳細はULIZA Video Analytics (Cloud)連携を参照してください。 - 字幕ボタン
- 字幕を表示/非表示または、言語を切り替えます。
詳細は字幕を参照してください。 - 倍速切り替えボタン
- 再生速度を変更します。
詳細は倍速再生を参照してください。 - 尺
- コンテンツの尺を表示します。
- シークプレビュー
- シーク先を示すプレビューを表示します。
詳細はシークプレビューを参照してください。 - シークバー
- つまみをスライドするとシークします。
- 再生位置
- コンテンツの再生位置を表示します。
- タイトル
- コンテンツのタイトルを表示します。
- 戻る(閉じる)ボタン
- プレイヤーを終了します。
- 横持ち拡大表示ボタン
- 横向きのレイアウトに切り替えます。
- インラインWebView
- Webページを表示します。
詳細はインライン再生を参照してください。
補足
上記のパーツを総称してプレイヤーUIと呼びます。
プレイヤーUIのうち、以下を除いたパーツを総称してコントローラー(プレイヤー)と呼びます。
- 動画表示領域
- インラインWebView
操作
ボタンとシークバー以外で可能な操作は以下の通りです。
- タップ
- コントローラー(プレイヤー)を表示/非表示、またはオーバーレイWebViewを表示します。
オーバーレイWebViewの詳細はオーバーレイWebViewを参照してください。 - ダブルタップ
- 映像を拡大/縮小します。
詳細は拡大表示を参照してください。 - ロングタップ
- 再生/一時停止を切り替えます。
- 左スワイプ
- 再生位置が固定秒数戻ります。
詳細は進む/戻るを参照してください。 - 右スワイプ
- 再生位置が固定秒数進みます。
詳細は進む/戻るを参照してください。
その他
ブラウザ等からインテント起動により再生画面に直接遷移する場合、iOSは再生終了しても元のアプリに戻りません。画面左上の「◀<アプリ>」ボタンを押下してください。
# 広告UI
プレイヤーで広告再生中の画面イメージは以下の通りです。広告の詳細は広告挿入を参照してください。
表示項目 Android
表示項目 iOS
- リニア広告
- リニア広告を表示します。
- 戻る(閉じる)ボタン
- プレイヤーを終了します。
- タイトル
- 広告のタイトルを表示します。
- 再生/一時停止ボタン
- 再生/一時停止を切り替えます。
- プログレスバー
- 広告の進捗状況を表示します。
- 詳細リンク
- リンクを押下すると広告ページへ遷移します。
- 残り時間
- 広告の残り時間を表示します。
- スキップボタン
- 広告をスキップします。
- コンパニオン広告
- コンパニオン広告を表示します。
補足
上記のパーツを総称して広告UIと呼びます。
広告UIのうち、以下を除いたパーツを総称してコントローラー(広告)と呼びます。
- リニア広告
- コンパニオン広告
操作
ボタン以外で可能な操作は以下の通りです。
- タップ
- コントローラー(広告)の表示/非表示を切り替えます。
- ロングタップ
- 再生/一時停止を切り替えます。
# リプレイUI
プレイヤーは、各インテント起動パラメータの設定により再生完了時にプレイヤーを終了する場合とプレイヤーを維持する場合があります。各インテント起動パラメータの設定に応じた再生終了時の動作は以下の通りです。
インテント起動パラメータ | 再生終了の動作 | ||
---|---|---|---|
overlaywebview | extviewparams | closeplayer | |
設定あり | 設定あり/なし | 設定あり/なし | プレイヤー維持 |
設定なし | 設定あり | 設定あり | プレイヤー終了 |
設定なし | プレイヤー維持 | ||
設定なし | 設定あり/なし | プレイヤー終了 |
プレイヤーを維持する場合は、リプレイボタンを表示します。リプレイUIの画面イメージは以下の通りです。
画面イメージ Android
画面イメージ iOS
# BG再生UI
プレイヤーはバックグラウンド再生中のUI(BG再生UI)として、以下の箇所にコントローラー(BG再生)を表示します。機種によっては、ロック画面にも表示します。バックグラウンド再生の詳細はバックグラウンド再生を参照してください。
- プレイヤー(Android) : 通知ドロワー、ステータスバー
- プレイヤー(iOS) : コントロールセンター
※ オーディオカードを引き続き表示します。
- サムネイル
- ビルド時に設定したサムネイル画像を表示します。
- タイトル
- インテント起動パラメータ"title"で指定された文字列を表示します。
- 詳細
- 「(アプリ名)で再生しています」を表示します。
- 再生/一時停止ボタン
- 再生/一時停止の切り替えを行います。
- シークバー
- つまみをスライドするとシークします。(iOSのみ)
- ボリュームコントロール
- つまみをスライドするとボリュームが変化します。(iOSのみ)
- AirPlayボタン
- AirPlayボタンを押下した後、AirPlayデバイスを選択するとAirPlay(ストリーミング)が開始されます。(iOSのみ)
- アイコン
- ビルド時に設定したアイコン画像を表示します。(Google Pixel系以外のAndroid端末のみ)
# オーディオカード
プレイヤー(iOS)は動画再生中、コントロールセンターにオーディオカードを表示します。オーディオカードの画面イメージは以下の通りです。
表示項目
- サムネイル
- ビルド時に設定したサムネイル画像を表示します。
- タイトル
- インテント起動パラメータ"title"で指定された文字列を表示します。
- 詳細
- 「(アプリ名)で再生しています」を表示します。
- 再生/一時停止ボタン
- 再生/一時停止の切り替えを行います。
- シークバー
- つまみをスライドするとシークします。
- ボリュームコントロール
- つまみをスライドするとボリュームが変化します。
- AirPlayボタン
- AirPlayボタンを押下した後、AirPlayデバイスを選択するとAirPlay(ストリーミング)が開始されます。
# マルチタスクUI
プレイヤー(iOS)でマルチタスクを利用する際の画面イメージは以下の通りです。
表示項目
# インライン再生
プレイヤーは、インテント起動時に特定のパラメータを受け取った場合、動画再生時にそのパラメータで指定されたURLをインラインWebViewで表示します。インテント起動時にそのパラメータが含まれない場合はフルスクリーン再生を行います。
画面イメージ Android
画面イメージ iOS
制限事項
- 以下の場合は、縦持ち通常表示ボタン/横持ち拡大表示ボタンでのインライン再生/フルスクリーン再生の切り替えを利用できません。
- マルチタスク環境
- Androidの場合、再生中にインラインWebViewで動画ダウンロードを行うと、インライン再生は一時停止します。
# セッションの引継ぎ
起動パラメータに指定されたセッションID(sid)は、アプリ内にハードコードされたパラメータに従ってクッキーとして保存します。
- クッキー名
- 固定(sid)
- クッキー有効ドメイン
- クッキーを送信するドメイン
- クッキー有効パス
- クッキーを送信するパス
- クッキー有効期間(秒)
- クッキーが保存された時刻から起算されるクッキーの有効期間
保存したクッキーは、以下の通信において有効です。
- WebView通信(homepage/loginpage/etc.)
- 環境変数取得
- 動画メタデータ取得(metaapi)
- 動画削除通知(delapi)
- ライセンスコントローラー(ticketapi2)
- ビーコン送信(logapi)
# ライセンス制御
# ライセンスコントローラー連携
プレイヤーは、DRMで暗号化された動画の再生に必要なライセンスを取得するために、ライセンスコントローラーURLにアクセスしチケットを取得します。取得したチケットはライセンス取得時に使用します。以下の動画の再生時にライセンスコントローラー連携によりチケットを取得します。
- 端末内に保存されたDASH(Widevine)コンテンツの再生
リクエスト
GET <ticketapi>?<query_string>
URLの要素は以下の通りです。
- <ticketapi>
- 環境変数ticketapi2の値
- DASH(Widevine)コンテンツの再生のためチケットを取得する場合は環境変数ticketapi2を用います。
- <query_string>
- 送信パラメータ
送信パラメータは以下の通りです。
- sid: 文字列
- セッションID
- videoid: 文字列
- ビデオID
# ライセンス取得(DASH(Widevine))
プレイヤーは、DASH(Widevine)コンテンツの再生に必要なライセンスを取得するために、ライセンス要求URLにアクセスします。ストリーミング配信の再生の場合、ライセンスは再生セッションごとに失効します。端末内に保存されたDASH(Widevine)コンテンツの再生の場合、Androidは有効期間超過後にライセンスが失効します。iOSは再生セッションごとにライセンスが失効します。
リクエスト
POST <wvdrmserver>?<query_string> Widevine DRM Libraryより生成されたライセンスリクエストデータ
URLの要素は以下の通りです。
- <wvdrmserver>
- 環境変数wvdrmserver2の値
- <query_string>
- 送信パラメータ
送信パラメータは以下の通りです。
- streamid: 文字列
- ビデオID
- pssh: 文字列
- DASH(Widevine)コンテンツ含まれるProtection System Specific Header
- optdata: 文字列
- チケット
# 再生制御(ライセンスポリシー)
プレイヤーは、ライセンスポリシーに従って動画の再生を制御します。ライセンスポリシーは、ライセンスに埋め込まれてLicense Proxy ServerからWidevine DRM Libraryに伝達します。
# 耐タンパ性
プレイヤーは、Jailbreak、またはRoot化を検知した場合、メッセージを表示して処理を停止します。また、時刻改ざんを検知した場合にも同様に対処します。
# 外部出力/録画制御
プレイヤーは、ビルド時の外部出力設定に従い外部出力および録画を制御します。外部出力および録画を検出した場合、コールバックイベントを通知します。
Android
出力方式 | HDMI出力不許可 | HDMI出力許可 | Miracast不許可 | Miracast許可 |
---|---|---|---|---|
HDMIデバイス接続(録画) | 再生エラー | Android端末に出力 HDMIデバイスに出力 | N/A | N/A |
Miracast接続 (外部出力) | N/A | N/A | 再生エラー | Android端末に出力 Miracastデバイスに出力 |
Cast (外部出力) | N/A | N/A | 再生エラー | Android端末に出力 Google Castデバイスに出力 |
iOS
出力方式/録画 | AirPlay不許可 | AirPlay許可 | Mirroring不許可 | Mirroring許可 |
---|---|---|---|---|
AirPlay接続 (外部出力) | 再生エラー | AirPlayに出力 | N/A | N/A |
HDMIデバイス接続 (録画) | N/A | N/A | 再生エラー | HDMIデバイスに出力 |
QuickTime Playerによるムービー収録 (録画) | N/A | N/A | 再生エラー | iOS端末に出力 QuickTime Playerに出力(※1) |
ScreenRecordingによる録画 (録画) | N/A | N/A | 再生エラー | iOS端末に出力 録画も行う |
(※1)暗号化されたコンテンツを再生する場合は、iOS端末、QuickTime Player共に映像部分が黒になります。
AirPlay端末のシステム要件は以下の通りです。
- tvOS 16.x〜18.2が搭載されたApple TV
制限事項
- プレイヤー(iOS)の場合、DASH(Widevine)コンテンツおよびDASH(Clear)コンテンツのAirPlay接続はサポートの対象外とします。
- AirPlay対応端末上で再⽣中にリニア広告が挿⼊する場合、リニア広告が正しく再⽣がされない場合があります。プレイヤー(iOS)で外部出力を有効にする場合、広告挿⼊は⾮推奨です。
# ビーコン
プレイヤーは、オンラインでの動画の再生中に一定間隔(15秒)、およびイベント発生をトリガとしてビーコン送信URLへビーコンを送信します。送信間隔はビルド時に設定として指定できます。
リクエスト
GET <logapi>?<query_string>
URLの要素は以下の通りです。
- <logapi>
- 環境変数logapiの値
- <query_string>
- 送信パラメータ
送信パラメータは以下の通りです。
- sid: 文字列
- セッションID
- videoid: 文字列
- ビデオID
- pos: 数値
- 再生位置(秒)
- event: 文字列
- イベント
- playing:再生中(LIVE再生時はpos=-1で送信)
- play:再生開始
- pause:一時停止
- seek:シーク
- stop:再生停止(動画終端に達し停止した際はpos=-2で送信)
- error:エラー検出
- インテント起動時に渡されたパラメータ: 文字列(クエリ文字列)
- インテント起動時にbeaconparamsで渡された固定パラメータ
- deviceid: 文字列
- デバイス識別子
デバイス識別子が利用できない場合、このパラメータは含みません。
詳細はデバイス識別子を参照してください。 - playbackrate: 数値
- 動画の倍速設定
- errorcode: 文字列
- エラー内容
以下の内容を含みます。- ステータスコード(数字)
- 詳細コード(数字)
- 詳細メッセージ(文字列)
<ステータスコード>_<詳細コード>_<詳細メッセージ> - appstatus: 数値
- アプリのステータス
- 0 : アプリがバックグラウンドの状態
- 1 : アプリがフォアグラウンドの状態
# 再生制御
プレイヤーは、以下の通信のレスポンスとしてHTTPステータスコード401を受信した場合、ポップアップメッセージを表示してコンテンツの再生を停止します。
- ビーコン
# デバイス識別子
以下の通信において、プレイヤーは送信情報にデバイス識別子を付与します。
- ビーコン送信(詳細はビーコンの送信パラメータを参照してください)
以下の通信において、URLに"[ADVERTISINGID]"が含まれる場合、プレイヤーは"[ADVERTISINGID]"をデバイス識別子に置き替えます。
- 広告データ(VMAP/VAST)取得要求のURL
- 広告再生時のトラッキングイベント(Impressionやクリックイベントなど)送信のURL
デバイス識別子は、起動パラメータdeviceIdで指定できます。deviceIdが未指定の場合は、プレイヤー内部で生成する値を使用します。プレイヤー内部で生成する値は、アプリがアンインストールされるまで保持します。
# 独自UserAgent
プレイヤーが通信する際にリクエストヘッダの"User-Agent"にプレイヤー固有のUserAgent文字列を設定します。
通信箇所 | Android | iOS | |
---|---|---|---|
環境変数 | 環境変数取得URL | ◯ | ◯ |
WebView通信 | デフォルト画面、ログインページ等のURL | ◯(※) | ◯(※) |
コンテンツの再生 | ストリーミングコンテンツURL | × | × |
ビーコン送信URL | ◯ | ◯ | |
DRM | ライセンスコントローラーURL | ◯ | ◯ |
ライセンス要求URL | × | × | |
ダウンロード | 動画メタデータ取得URL | ◯ | ◯ |
動画サムネイル取得URL | ◯ | ◯ | |
ダウンロードコンテンツURL | ◯ | ◯ | |
動画削除通知URL | ◯ | ◯ | |
ULIZA Google Cast | Receiver設定情報取得APIのURL | ◯ | ◯ |
Cast情報取得APIのURL | ◯ | ◯ | |
広告 | VMAP、VAST取得URL | ◯ | ◯ |
ビーコン送信URL | ◯ | ◯ |
(※)「WebView通信時のUserAgent」を参照してください。
フォーマット
Android
UlizaPlayer_Android/<Ver> (Android/<OS Ver>; <モデル名>; Build/<ビルド番号>; Radio/<ベースバンドVer>)
※ 端末がAndroid TVの場合、「Android/<OS Ver>」の部分が「AndroidTV/<OS Ver>」になります。
iOS
UlizaPlayer_iOS/<Ver> (iOS/<OS Ver>; <モデル名>; <カーネル名>/<カーネルVer>; Radio/Unknown)
WebView通信時のUserAgent
プレイヤー内のWebViewからアクセスする場合は、デフォルトのUserAgentにプレイヤーのUserAgentを追加します。具体例は以下の通りです。太文字の部分が「追加されたプレイヤーのUserAgent」です。
例)
Android
Mozilla/5.0 (Linux; Android 10; SOV39 Build/52.1.C.0.192; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/81.0.4044.138 Mobile Safari/537.36 UlizaPlayer_Android/2.17.0 (Android/10; SOV39; Build/52.1.C.0.192; Radio/845-sdm845.gen.prodQ-00052-45) UlizaPlayerApp/2.17.0
iOS
Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 UlizaPlayer_iOS/2.17.0 (iOS/13.4.1; iPhone12,3; Darwin/19.4.0; Radio/Unknown) UlizaPlayerApp/2.17.0
アプリバージョン
アプリの場合、ビルド時の設定で独自UserAgentの末尾にアプリバージョンを追加できます。アプリバージョン部分のフォーマットは以下の通りです。
<アプリ名>/<バージョン>
AndroidのWebViewからアクセスする際のUserAgentにアプリバージョンを追加する場合の例は以下の通りです。太字部分がアプリバージョンです。
例)
Mozilla/5.0 (Linux; Android 10; SOV39 Build/52.1.C.0.192; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/81.0.4044.138 Mobile Safari/537.36 UlizaPlayer_Android/2.17.0 (Android/10; SOV39; Build/52.1.C.0.192; Radio/845-sdm845.gen.prodQ-00052-45) UlizaApp/2.17.0
# 広告挿入
プレイヤーは、VODとLIVEの再生において、広告を再生/表示します。広告のUIについては広告UIを参照してください。
VOD
プレイヤーは、インテント起動パラメータに指定されたVMAPを取得し、VMAPで指定された広告再生ポジションで広告を再生/表示します。広告を再生/表示する際の広告サーバーからの応答はVASTに対応しています。
◯再生可能な広告
サポートする広告の種別は以下の通りです。
- リニア広告
- コンパニオン広告
◯広告の再生タイミング
VMAPで指定された広告再生ポジションで広告を再生/表示します。広告再生ポジションに応じて以下の3種類に分類されます。
- プリロール
- ミッドロール
- ポストロール
◯再生可能なリニア広告のフォーマット
再生可能なリニア広告のフォーマットは以下の通りです。
- MP4
◯表示可能なコンパニオン広告のフォーマット
表示可能なコンパニオン広告の画像フォーマットは以下の通りです。
- BMP
- PNG
- GIF
- JPEG
プレイヤーは、VOD再生時の広告挿入においてインテント起動パラメータまたはビルド時の設定に応じて以下の機能の動作を変更できます。
◯広告の繰り返し再生
広告再生ポジションの通過(再生または前方シーク)時にリニア広告を再生します。広告の繰り返し再生はビルド時の設定として指定できます。デフォルト値は「繰り返し再生をする」です。 対応している広告の再生タイミングは以下の通りです。
- ミッドロール
◯広告再生数の制御
1つ以上の広告再生ポジションの通過(前方シークやレジューム再生)時にプレイヤーが1度に再生するリニア広告の数を制限します。広告再生数はインテント起動パラメータで指定します。デフォルト値は1です。0を指定する場合、広告再生ポジションの通過(前方シークやレジューム再生)時にリニア広告を再生しません。 対応している広告の再生タイミングは以下の通りです。
- ミッドロール
# 多言語切り替え
プレイヤーは、端末の言語設定に応じて表示言語を切り替えます。言語設定と表示言語の対応は以下の通りです。
端末の言語設定 | 表示言語 |
---|---|
日本語 | 日本語 |
英語 | 英語 |
上記以外 | 英語 |
# ULIZA Video Analytics (Cloud)連携
プレイヤーは、ULIZA Video Analytics (Cloud)連携が有効な場合に視聴状況や視聴時の操作をビーコンで送信します。ULIZA Video Analytics (Cloud)連携は、以下の設定で有効/無効を指定できます。
- ビルド時の設定(有効/無効)
- インテント起動時の指定(インテント起動パラメータの"enable"の値)(有効/無効)
設定に応じたULIZA Video Analytics (Cloud)連携の動作は以下の通りです。インテント起動パラメータが指定されている場合、ビルド時の設定を上書きします。
ビルド時の設定(有効) | ビルド時の設定(無効) | |
---|---|---|
インテント起動時の指定(有効) | 有効 | 有効 |
インテント起動時の指定(無効) | 無効 | 無効 |
インテント起動時の指定なし | 有効 | 無効 |
また、ユーザーオプトアウトボタンの表示/非表示をビルド時の設定として指定できます。ユーザーオプトアウトボタンを表示する場合、ユーザーは以下の方法でULIZA Video Analytics (Cloud)のユーザーオプトアウト機能の有効/無効を切り替えられます。ユーザーオプトアウト機能の有効/無効の情報は端末に一意に保存されます。
- プレイヤーUIのユーザーオプトアウトボタン
- 設定画面のユーザーオプトアウト機能設定
起動パラメータ
以下にULIZA Video Analytics (Cloud)カスタムデータを指定する場合のパラメータを記載します。
- enable: 真偽値
- ULIZA Video Analytics (Cloud)連携の有効/無効
ビルド時の設定を上書きする場合に使用します。 - trackingId: 文字列
- ULIZA Video Analytics (Cloud)で使用するビーコンの送信先識別子
使用可能な文字列は、半角英数および記号 `-` です。ビルド時の設定を上書きする場合に使用します。弊社からお知らせする文字列を設定してください。 - userId: 文字列
- ULIZA Video Analytics (Cloud)でユーザーIDとして使用する文字列
使用可能な文字列は、半角英数および記号 `-_` です。50文字以内で指定してください。 - contentName: 文字列
- ULIZA Video Analytics (Cloud)でコンテンツ識別子として使用する文字列
ULIZA VMS (Cloud) 連携時はコンテンツ名、ULIZA VMS G4/G3 連携時はエピソードコードを指定して下さい。
4096文字以内で指定してください。 - contentTitle: 文字列
- ULIZA Video Analytics (Cloud)でコンテンツタイトルとして使用する文字列
ULIZA VMS (Cloud) 連携時はコンテンツタイトル、ULIZA VMS G4/G3 連携時はエピソード名を指定して下さい。
4096文字以内で指定してください。
contentTitleが未指定の場合の動作は、<contentTitleが未指定の場合>を参照してください。 - contentCategory: 文字列
- ULIZA Video Analytics (Cloud)でコンテンツカテゴリとして使用する文字列
ULIZA VMS (Cloud) 連携時はカテゴリ、ULIZA VMS G4/G3 連携時はフォルダ名を指定して下さい。
4096文字以内で指定してください。 - takeOverSession: 真偽値
- Cast接続時のセッション引き継ぎの有効/無効
動画の再生中にCastする場合、同一視聴とするか否かを指定します。
<contentTitleが未指定の場合>
インテント起動パラメータの"title"がある場合、"title"を使用します。"title"がない場合、コンテンツのURLのパスとクエリ文字列を使用します。
例)
contentTitleが未指定かつtitleがない場合のコンテンツのURLが「https://host.foo.com/contents/movie.mp4?key1=value1&key2=value2」の場合、contentTitleは以下を使用します。
/contents/movie.mp4?key1=value1&key2=value2
以下にULIZA Video Analytics (Cloud)カスタムデータの例を示します。
例)
以下のカスタムデータを指定する場合
- enableが「true」
- trackingIdが「00000000-0000-0000-0000-000000000000」
- contentIdが「content_id」
- userIdが「user_id」
- categoryIdが「category_id」
- takeOverSessionが「true」
以下のJSON形式の文字列を用意してください。
{
"enable": true,
"trackingId": "00000000-0000-0000-0000-000000000000",
"contentId": "content_id",
"userId": "user_id",
"categoryId": "category_id",
"takeOverSession": true
}
制限事項
- ダウンロードしたコンテンツの再生中は、ビーコンを送信しません。
- プレイヤー(iOS)においてバックグラウンド状態かつ一時停止中の場合、ビーコンを送信しません。
# シークプレビュー
プレイヤーは、ユーザーのシーク操作時にシーク先を示すプレビューを表示できます。
起動パラメータ
インテント起動パラメータ"seekpreview"を指定することで、シークプレビューを利用できます。
- url: 文字列(URL)
- シークプレビュー画像のURL
本パラメータは必須です。
例)
シークプレビュー画像のURLが「https://host.foo.com/seekpreview/content01_preview_list.jpeg」の場合、以下のJSON形式の文字列を作成してください。
{"url": "https://host.foo.com/seekpreview/content01_preview_list.jpeg"}
# 拡大表示
プレイヤーは、以下のユーザー操作により動画表示領域の拡大縮小および表示位置を移動することができます。
機能 | 操作 | 挙動 |
---|---|---|
拡大表示 | ダブルタップ | コンテンツの再生中に画面をダブルタップすると、ダブルタップした位置を中心として動画を拡大表示します。また拡大表示中に画面をダブルタップすると、元の大きさで動画を表示します。 |
ピンチ | コンテンツの再生中に画面をピンチアウトすると、ピンチアウトした位置を中心として動画を拡大表示します。また拡大表示中に画面をピンチインすると、ピンチインした位置を中心として動画を縮小します。 | |
表示位置移動 | スワイプ | 拡大表示中に画面をスワイプすると、動画の表示位置を移動します。 |
本機能は以下の設定で有効/無効を指定できます。
- ビルド時の設定(有効/無効)
- インテント起動時の指定(インテント起動パラメータ"enable"の値)(有効/無効)
設定に応じた拡大表示の動作は以下の通りです。インテント起動パラメータが指定されている場合、ビルド時の設定を上書きします。
ビルド時の設定(有効) | ビルド時の設定(無効) | |
---|---|---|
インテント起動時の指定(有効) | 有効 | 有効 |
インテント起動時の指定(無効) | 無効 | 無効 |
インテント起動時の指定なし | 有効 | 無効 |
起動パラメータ
インテント起動パラメータ"enlargement"に適切な値を設定することで、拡大表示を利用できます。
- enable: 真偽値
- 拡大表示の有効/無効
- maxRate: 数値
- 最大拡大率(%)
100以上700以下の値を指定してください。
デフォルト値:700
制限事項
- 以下の条件の場合に本機能は無効になります。
- 外部出力中
- 広告再生中
- オーバーレイWebView表示中
- 動画のCast中
# 倍速再生
プレイヤーは、VODおよびダウンロードしたコンテンツの再生の際に再生速度を変更できます。再生速度の変更のために設定する倍速値の配列は以下をサポートします。
- 0.5倍速から2.0倍速まで、0.1毎の値をサポートします。それ以外の値についてはサポートの対象外です。
- 1.0倍速の設定は必須です。
- 配列の1.0倍速の指定位置から配列に指定された順番に再生速度を切り替えます。
起動パラメータ
○VOD
インテント起動パラメータ"playbackrates"を指定することで、設定した倍速値の配列に従い再生速度を切り替えられます。
- values: 数値の配列
- 倍速値の配列
本パラメータは必須です。
○ダウンロードしたコンテンツの場合
動画メタデータ"playbackrates"に設定した倍速値の配列に従い再生速度を切り替えられます。動画メタデータ"playbackrates"には、インテント起動パラメータ"playbackrates"と同様のJSON形式の文字列を指定してください。
例)
1.0倍速→1.4倍速→1.6倍速→2.0倍速→0.5倍速→ …の順で倍速値を変更する場合、以下のJSON形式の文字列を作成してください。
{"values": [0.5, 1.0, 1.4, 1.6, 2.0]}
利用可能コンテンツ
OS | DASH(Widevine)コンテンツ | HLSコンテンツ | MP4コンテンツ |
---|---|---|---|
Android | ◯ | ◯ | ◯ |
iOS | × | ◯ | ◯ |
※ 設定される倍速値、機種の性能、または端末の状態によっては、コマ落ちする等の問題が発生する場合があります。
# オーバーレイWebView
プレイヤーは、オーバーレイWebView表示機能およびプレイヤー外部連携機能を持ちます。
起動パラメータ
インテント起動パラメータ"overlaywebview"に適切な値を設定することで、オーバーレイWebView表示機能およびプレイヤー外部連携機能を利用できます。
- url: 文字列(URL)
- オーバーレイで表示するWebViewで読み込むURL
本パラメータは必須です。 - visibility: 文字列
- オーバーレイで表示するWebViewの表示制御
visibleもしくはhiddenを指定します。
- visible:ユーザー操作によってWebViewが表示されます。
- hidden:ユーザー操作によってWebViewが表示されません。
- registerCallback: 文字列
- コールバック関数名
プレイヤー外部連携機能のプレイヤーの状態とイベント取得のために必要です。指定されていない場合はプレイヤーの状態とイベント取得ができません。
例)
- オーバーレイで表示するWebViewでhttps://www.foo.com/aaa/bbb/top.htmlを読み込む。
- ユーザー操作によりWebViewを表示する。
- コールバック関数名をonEventとする。
この例の場合、以下のJSON形式の文字列を作成してください。
{
"url": "https://www.foo.com/aaa/bbb/top.html",
"visibility": "visible",
"registerCallback": "onEvent"
}
# オーバーレイWebView表示機能
オーバーレイWebView表示機能はプレイヤーにWebViewをオーバーレイ表示する機能です。WebViewは動画再生時にWebページを読み込み、ユーザー操作により表示/非表示を切り替えられます。
◯表示
コントローラー(プレイヤー)を表示している状態で、コントローラー(プレイヤー)以外の部分をタップする。ただし、インテント起動パラメータのオーバーレイで表示するWebViewの表示制御の設定がhiddenの場合は表示されません。
◯非表示
プレイヤー(Android)は、WebViewを表示した状態で端末のBackボタンを押下する。プレイヤー(iOS)は、プレイヤー外部連携機能のプレイヤーの制御を利用してください。
ただし、以下のいずれかの場合、WebViewは表示されません。
- リニア広告再生中の場合
- インライン再生中の縦持ち時の場合
- エラーダイアログ表示中の場合
- WebViewがWebページの読み込みに失敗した、またはWebページの読み込みに30秒以上経過した場合
# プレイヤー外部連携機能
プレイヤー外部連携機能はプレイヤーの制御およびプレイヤーの状態とイベント取得を行う機能です。
# プレイヤーの制御
オーバーレイWebViewに読み込まれたWebページからプレイヤーに対してリクエストを送信することで、プレイヤーの制御を行うことができます。ただし、プレイヤーの状態や環境によっては、リクエストを処理できない、またはリクエストが遅延して処理される場合があります。
リクエスト
<scheme>+player:overlaywebview?requestEvent=<request_event>&<その他key/value>
URLの要素は以下の通りです。
- <scheme>
- インテント起動用URLスキーム
- <request_event>
- プレイヤーへの制御を示す文字列
詳細はリクエストイベントごとのプレイヤーの制御内容を参照してください。 - <その他key/value>
- プレイヤーへの制御によって必要に応じて追加する情報
リクエストイベントの各制御に記載します。
リクエストイベントごとのプレイヤーの制御内容は以下の通りです。
- play
- 再生再開要求を行います。再生再開要求により、プレイヤーは動画が一時停止状態の場合は再生再開を行い、再生終了時(ポストロールが設定されている場合はポストロールの再生終了時)の場合はリプレイを行います。ただし、以下の場合、プレイヤーは処理を行いません。
- エラーダイアログ表示中の場合
<scheme>+player:overlaywebview?requestEvent=play
- seekTo
- シーク要求を行います。シーク要求により、プレイヤーはその他key/valueで指定されたシーク位置に再生位置を移動します。ただし、以下の場合、プレイヤーは処理を行いません。
- リニア広告再生中の場合
- エラーダイアログ表示中の場合
- LIVE
- pos: 数値
- シーク位置(秒)を示します。リクエストイベントがseekToの場合は必須です。
<scheme>+player:overlaywebview?requestEvent=seekTo&pos=30
- stop
- 再生停止要求を行います。再生停止要求により、プレイヤーはプレイヤーを終了し、動画再生開始前の画面に戻ります。ただし、以下の場合、プレイヤーは処理を行いません。
- エラーダイアログ表示中の場合
<scheme>+player:overlaywebview?requestEvent=stop
- showView
- オーバーレイWebViewの表示要求を行います。表示要求により、プレイヤーはオーバーレイWebViewが表示されていない場合、オーバーレイWebViewを表示します。ただし、以下の場合、プレイヤーは処理を行いません。
- リニア広告再生中の場合
- インライン再生中の縦持ち時の場合
- エラーダイアログ表示中の場合
<scheme>+player:overlaywebview?requestEvent=showView
- hideView
- オーバーレイWebViewの非表示要求を行います。非表示要求により、プレイヤーはオーバーレイWebViewが表示されている場合、オーバーレイWebViewを非表示にします。以下に例として、オーバーレイWebViewの非表示要求のリクエストURLを記載します。
<scheme>+player:overlaywebview?requestEvent=hideView
- getPlayerInfo
- プレイヤーの状態とイベントの取得要求を行います。プレイヤーの状態とイベントの取得要求により、プレイヤーはプレイヤーの状態とイベントを取得し、JavaScriptのコールバック関数を介してプレイヤーの状態とイベントを返却します。コールバック関数については、プレイヤーの状態とイベント取得を参照してください。以下に例として、プレイヤーの状態とイベントの取得要求のリクエストURLを記載します。
<scheme>+player:overlaywebview?requestEvent=getPlayerInfo
# プレイヤーの状態とイベント取得
オーバーレイWebViewに読み込まれたWebページは、プレイヤーで特定のイベントが発生した際に、JavaScriptのコールバック関数を介してプレイヤーの状態とイベントを取得することができます。プレイヤーの状態とイベントを取得するには、Webページでコールバック関数として以下のような関数を用意してください。
- 関数名がインテント起動パラメタに指定したコールバック関数名である
- 1つ以上の引数を持つ
インテント起動パラメタに指定したコールバック関数名をplayerCallbackとした場合の実装例を以下に記載します。 第一引数はプレイヤーの状態とイベントを示すオブジェクトです。
<script type='text/javascript'>
function playerCallback(info){
// コールバック時の処理
}
</script>
プレイヤーの状態とイベントを示すオブジェクトのプロパティは以下の通りです。
- event: 文字列
- コールバックイベント名
コールバック関数が呼び出された契機を示す文字列です。 - streamType: 文字列
- 本編動画の配信方式
vod :VODの再生
live :LIVEの再生
dvr :DVRの再生
unknown:本編動画の再生が開始していない場合 - isPlaying: 真偽値
- プレイヤーの再生状態
true:再生中である状態
false:一時停止中、またはプレイヤーが再生可能ではない状態 - currentPosition: 数値
- 本編動画の現在再生時間(秒)
streamTypeがlive、またはdvrの場合、-1
本編動画の再生が開始していない場合、0 - duration: 数値
- 本編動画の総動画時間(秒)
streamTypeがlive、またはdvrの場合、-1
本編動画の再生が開始していない場合、-1 - title: 文字列
- 本編動画の動画タイトル
本編動画の動画タイトルがインテント起動パラメタに指定されていない場合、空文字 - url: 文字列
- 本編動画の動画URL
- isAd: 真偽値
- リニア広告表示状態
true:リニア広告表示中である状態
false:リニア広告表示中でない状態 - sid: 文字列
- セッションID
セッションIDがインテント起動パラメタに指定されていない、かつクッキーからセッションIDが読み取れない場合、空文字 - videoSize: オブジェクト
- 本編動画のビデオサイズ
- .width: 数値
- 本編動画の横サイズ
本編動画の再生が開始していない場合、0
本編動画とポストロールが再生終了している場合、0 - .height: 数値
- 本編動画の縱サイズ
本編動画の再生が開始していない場合、0
本編動画とポストロールが再生終了している場合、0
- orientation: 文字列
- プレイヤーの向き
landscape:横向き
portrait:縦向き - webview: オブジェクト
- オーバーレイWebViewの情報
- .url: 文字列
- オーバーレイWebViewで読み込むURL
- .visibility: 文字列
- オーバーレイWebViewの表示/非表示の状態
visible:オーバーレイWebViewを表示している状態
hidden:オーバーレイWebViewを非表示にしている状態
- appstatus: 数値
- アプリのステータス
0:アプリがバックグラウンドの状態
1:アプリがフォアグラウンドの状態 - isFirstPlayback: 真偽値(true/false)
- 初回動画再生の状態
true : 初回動画再生
false : 二回目以降の動画再生
コールバックイベント名とコールバック関数が呼び出される契機は以下の通りです。
- stop
- 再生終了(ポストロールが設定されている場合はポストロールの再生開始前)
- pause
- 一時停止(一時停止ボタン押下、リニア広告再生前など)
- play
- 再生(本編開始、再生ボタン押下、リニア広告終了後の本編再生など)
- complete
- 再生終了(ポストロールが設定されている場合はポストロールの再生終了後)
- orientationchange
- プレイヤーの向きの変化
- adstart
- リニア広告の開始
- adstop
- リニア広告の終了
- adskip
- リニア広告のスキップ
- getplayerinfo
- プレイヤーの状態とイベントの取得要求
- cuetone
- LIVEでのキュートーン情報挿入位置再生
挿入位置は、キュートーンAPIによりライブストリームにキュートーン情報が挿入された位置です。 - appstatuschange
- アプリのステータス(appstatus)の変更
# 字幕
プレイヤーは、動画再生中に字幕を表示できます。サポートする字幕データのフォーマットは以下の通りです。ただし、タグ・CSSによる装飾、表示位置指定については未対応です。
- WebVTT
字幕設定
インテント起動パラメータ"subtitle"を設定することで、字幕を利用できます。インテント起動パラメータ"subtitle"を設定するとプレイヤーは字幕ボタンを表示します。字幕ボタンで字幕の表示/非表示または言語の切り替えができます。以下に切り替えの例を示します。
例)
インテント起動パラメータ"subtitle"の字幕情報が日本語、英語の順で指定されている場合は、字幕ボタンを押下する度に次の順序で字幕が切り替わります。
非表示 → 日本語 → 英語 → (非表示へ戻る)
字幕のフォントは以下の通りです。インテント起動パラメータでカスタマイズできます。
- Android:端末のフォント設定に依存します。固定幅フォントを使用します。
- iOS:固定幅フォントを使用します。
起動パラメータ
インテント起動パラメータ"subtitle"の設定項目は以下の通りです。
- subtitles: Object
- 字幕設定
本パラメータは必須です。 - .src: Objectの配列
- 字幕情報
言語毎の情報(label、url)を列挙したもので、少なくとも1つは指定してください。本パラメータは必須です。 - .label: 文字列
- 字幕の言語ラベル
字幕ボタンラベルに用います。全角半角問わず最大3文字とし、3文字を越える場合は先頭の3文字を切り取ります。本パラメータは必須です。 - .url: 文字列
- 字幕データのURL
本パラメータは必須です。
- .font_family: 文字列の配列
- フォント名
指定のフォントがOSに存在しない場合はアプリデフォルトのフォントを使用します。複数指定されている場合は、先頭以外を無視します。 - .color: 文字列の配列
- 文字色
RGBA形式のカラーコード(16進数)です。複数指定されている場合は、先頭以外を無視します。
デフォルト値:0xffffffff - .background_color: 文字列の配列
- 背景色
RGBA形式のカラーコード(16進数)です。複数指定されている場合は、先頭以外を無視します。
デフォルト値:0x1a1a1acc
例)
{
"subtitles":
{
"src": [
{
"label": "jpn",
"url": "https://www.foo.com/jpn.vtt"
},
{
"label": "eng",
"url": "https://www.foo.com/eng.vtt"
}
],
"font_family": ["monospace"],
"color": ["0xffffffff"],
"background_color": ["0x1a1a1acc"]
}
}
# 進む/戻る
プレイヤーは、動画再生中に固定秒数進む、または固定秒数戻る事ができます。進む/戻る秒数と進む/戻る操作の有効/無効はビルド時の設定として指定できます。進むボタン、戻るボタンにはビルド時に指定した秒数を表示します。
操作 | フリック | ボタン |
---|---|---|
進む操作 | 右フリック | 進むボタン押下 |
戻る操作 | 左フリック | 戻るボタン押下 |
制限事項
- 以下の条件の場合に本機能は無効になります。
- LIVE再生中
- 広告再生中
- オーバーレイWebView表示中
# バックグラウンド再生
プレイヤーは、動画再生中にバックグラウンドに遷移する際に再生を継続できます。また、バックグラウンド再生中は、コントローラー(BG再生)を使って再生を制御できます。
バックグラウンド再生は、以下の設定で有効/無効を指定できます。
- ビルド時の設定(許可/不許可)
- インテント起動パラメータ(バックグラウンド再生無効化フラグの設定あり/設定なし)
- 設定画面(バックグラウンド再生設定の有効/無効)
※ ULIZA Player SDKを利用する場合は、バックグラウンド再生設定を有効として扱います。
それぞれの設定に応じたバックグラウンド再生の動作は以下の通りです。
ビルド時の設定 | インテント起動パラメータ | 設定画面 | バックグラウンド再生の動作 |
---|---|---|---|
許可 | 設定なし | 有効 | 無効 |
無効 | 無効 | ||
設定あり | 有効/無効 | 無効 | |
不許可 | 設定あり/なし | - | 無効 |
UI
バックグラウンド再生中のUIはBG再生UIを参照してください。
制限事項
- iOS、iPadOSの場合、DASH(Widevine)コンテンツおよびDASH(Clear)コンテンツのバックグラウンド再生はサポートの対象外です。
- 以下の機能を使用する場合は本機能を無効にします。
- VOD再生時の広告挿入
- 本機能を使用する場合は以下の機能を無効にします。
- LIVE再生時の広告挿入
※ バックグラウンド再生が有効な場合
- LIVE再生時の広告挿入
- 機種によっては、バックグラウンド再生ができません。
# 初回動画再生通知
プレイヤーはインストール後に初めて動画を再生する際、オーバーレイWebViewを用いて読み込んだWebページのURLにクエリパラメータを追加することで、初回動画再生であることを通知します。このクエリパラメータのkeyはビルド時の設定として指定できます。
例)
WebページのURLが"https://www.foo.com/var.html"で、keyが"hoge"の場合
https://www.foo.com/var.html?hoge=true
# キーマッピング
プレイヤー(Android)は、キーイベントの操作をカスタマイズ(キーマッピング)できます。キーマッピングは、ビルド時の設定として指定できます。
キーマッピングは、コンテンツの種類毎に設定できます。サポートするコンテンツは以下の通りです。
- VODコンテンツ
- LIVEコンテンツ
※ 広告再生中は、カスタマイズは適用されません。
キーマッピングは、Android Platform APIに定義されている以下のキーコードに対してカスタマイズが可能です。
- KEYCODE_DPAD_UP
- オーバーレイWebView表示
- KEYCODE_DPAD_DOWN
- コントローラー表示
- KEYCODE_DPAD_LEFT
- シークバーのつまみを左へ移動
- KEYCODE_DPAD_RIGHT
- シークバーのつまみを右へ移動
- KEYCODE_DPAD_CENTER
- 状態により異なる(確定/コントローラー表示/オーバーレイWebView表示)
- KEYCODE_MEDIA_PLAY_PAUSE
- 再生/一時停止
- KEYCODE_MEDIA_PLAY
- 再生
- KEYCODE_MEDIA_PAUSE
- 一時停止
- KEYCODE_MEDIA_STOP
- プレイヤー終了
- KEYCODE_MEDIA_FAST_FORWARD
- シークバーのつまみを右へ移動
- KEYCODE_MEDIA_REWIND
- シークバーのつまみを左へ移動
- KEYCODE_MEDIA_NEXT
- 次の動画を再生
- KEYCODE_MEDIA_PREVIOUS
- 前の動画を再生
- KEYCODE_MEDIA_SKIP_FORWARD
- 進む(進むボタン押下と同様)
- KEYCODE_MEDIA_SKIP_BACKWARD
- 戻る(戻るボタン押下と同様)
例として、Amazon Fire TVのリモコンでのキーの名称とそれに割り当てられているキーイベントの一覧を記載します。
- センターキー(※)
- KEYCODE_DPAD_CENTER
- 上キー
- KEYCODE_DPAD_UP
- 右キー
- KEYCODE_DPAD_RIGHT
- 下キー
- KEYCODE_DPAD_DOWN
- 左キー
- KEYCODE_DPAD_LEFT
- 早戻しキー
- KEYCODE_MEDIA_REWIND
- 再生/一時停止キー
- KEYCODE_MEDIA_PLAY_PAUSE
- 早送りキー
- KEYCODE_MEDIA_FAST_FORWARD
(※)カスタマイズの有無に関わらず、再生位置の移動中は再生位置を確定します。
# 次前動画切り替え
プレイヤー(Android)のキーマッピングでカスタマイズできる機能です。本機能を割り当てた操作を行うことで、次動画/前動画に切り替えられます。
# マルチタスク
プレイヤー(iOS)はマルチタスクに対応しています。サポートするマルチタスクのモードは以下です。
- Split View
- Slide Over
※ ピクチャ・イン・ピクチャは非サポートです。
マルチタスク環境とは以下の条件を満たす環境を指します。
- iPadであること。
- ULIZA Player SDKを利用する場合は、マルチタスクを有効にしたアプリであること。
# エラー
プレイヤーはエラーが発生した場合、エラーメッセージをダイアログで表示します。エラーメッセージには下記が含まれます。
- エラータイトル
- エラーコード(Statusコード, 詳細コード)
- 詳細メッセージ(エラーの種類によって出力しない場合があります)
※ なお、以降に定義されていないエラーコードは、原因不明のエラーとなります。その場合、エラーメッセージをご連絡ください。
# Android
プレイヤー(Android)はエラーが発生した場合、以下のメッセージを表示します。
エラータイトル | エラーコード | 詳細メッセージ | 説明 | |
---|---|---|---|---|
Statusコード | 詳細コード | |||
再生に失敗しました | 12000 | 0 | プレイヤーがエラーと判断した理由のメッセージ | プレイヤー起動時のパラメータの不正、またはプレイヤー内部のエラーにより再生が継続できない場合。 |
再生に失敗しました | 12002 | 40003 | DRM処理時のエラーメッセージ(HTTPステータスコード、ライセンスステータスなどを含む) DASH(Widevine)コンテンツ再生開始時のDRM処理においてエラーが発生した場合。 | 詳細メッセージにはDRM処理時のエラーの詳細が含まれます。エラーの詳細には、ライセンス要求に失敗した際にライセンス要求URLより返却されたHTTPステータスコード、またはライセンス要求URLより返却されたライセンスステータスが含まれます。 |
再生に失敗しました | 12003 | 0未満の整数値 | 無し | 詳細コードには、MediaPlayer.OnErrorListenerで通知されたextraの値が入ります。(※1) |
E-0000 | 再生に失敗した際の例外メッセージ | 動画の再生開始時、または再生中に不明なエラーが発生した場合。 | ||
E-1000 | 再生に失敗した際の例外メッセージ | 動画の再生開始時、または再生中にサーバーからレスポンスが期待しないデータであった場合 | ||
E-2000, E-2001, E-2002, E-2003, E-3000, E-3001 | 再生に失敗した際の例外メッセージ | 再生開始時、または再生中に通信のタイムアウトが発生した、またはサーバーからのレスポンスが期待しないHTTPステータスコードだった場合。 | ||
E-4000, E-4001, E-4002 | 再生に失敗した際の例外メッセージ | 動画の再生開始時、または再生中、サーバーとの接続にタイムアウトが発生した、またはサーバーが見つからなかった場合。 | ||
E-6000, E-6001 | 再生に失敗した際の例外メッセージ | 動画の再生開始時、または再生中、デコーダーでのエラーが発生した場合。 | ||
再生を停止しました | 12004 | 0 | なし | ビーコンのレスポンスとしてHTTPステータスコード401を受信した場合。 |
再生に失敗しました | 12005 | 0 | なし | Audio関連のエラーが発生した場合。 動画の再生開始時、Audioの利用権の獲得に失敗した場合に表示します。 |
再生に失敗しました | 12007 | 0 | 映像の外部出力は許可されていません | Miracastが有効な状態、及びHDMI出力機器が接続された状態で再生を開始した場合。または再生中にそれらの機器が接続された場合。 (外部出力制御が不許可になっている場合のみ) |
(※1) MediaPlayer.OnErrorListenerで通知されるextraの値については、Android DeveloperのMediaPlayer.OnErrorListenerのAPIドキュメントを参照してください。
# iOS
プレイヤー(iOS)はエラーが発生した場合、以下のメッセージを表示します。
エラータイトル | エラーコード | 詳細メッセージ | 説明 | |
---|---|---|---|---|
Statusコード | 詳細コード | |||
再生に失敗しました | 11000 | 0 | プレイヤーがエラーと判断した理由のメッセージ | プレイヤー起動時のパラメータの不正の場合。 |
再生に失敗しました | 11001 | 2 | 通信エラーに関するメッセージ(HTTPステータスコードを含む) | チケット取得で通信エラーが発生した場合。 詳細メッセージには通信エラーに関するメッセージ(HTTPステータスコードなど)が入ります。 |
再生に失敗しました | 11003 | 0 または 0未満の値 | OSのプレイヤーコンポーネントから返却されたメッセージ | 再生中、または再生開始時にエラーが発生した場合。 詳細コードの値はOSのプレイヤーコンポーネントから返却されたエラーコードが表示されます。 |
DRMコンポーネントから返却されたエラーコード | なし | DASH(Widevine)コンテンツ再生開始時または再生中にDRM処理においてエラーが発生した場合。 | ||
再生を停止しました | 11004 | 0 | なし | ビーコンのレスポンスとしてHTTPステータスコード401を受信した場合。 |
再生に失敗しました | 11007 | 0 | 映像の外部出力および画面収録は許可されていません | AirPlayが有効な状態、HDMI出力機器が接続された状態、及びScreen Recordingが開始された状態で再生を開始した場合。または再生中にそれらの状態へ遷移した場合。 (外部出力制御/録画制御が不許可になっている場合のみ) |
# ULIZA Google Cast
プレイヤーはULIZA Google Cast機能によるCast情報取得でエラーが発生した場合、以下のメッセージを表示します。
メッセージ | 説明 |
---|---|
Cast対象のコンテンツではありません | Cast情報取得APIにCastするコンテンツを問い合わせた結果、Cast情報が存在しない旨のレスポンス(HTTPステータスコードが204)を受け取った場合に表示します。 |
Castデータの取得に失敗しました | 上記外の理由でCast情報が取得できなかった場合に表示します。 |
← 機能 機能(アプリのみで利用可能) →