P2P設定
interface.utsを参照してください
P2pEngine
P2pEngineをインスタンス化し、グローバルなシングルトンを取得します:
javascript
//初期化
function initP2p (token:string,configOptions:ConfigOptions|null=null):voidパラメータの説明:
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| token | string | はい | CDNByeが発行したtoken。 |
| config | ConfigOptions | いいえ | カスタム設定。 |
P2Pアドレスの取得またはソースの切り替え
再生時または新しい再生アドレスに切り替える際は、新しい再生アドレスをプラグインに渡すだけで、新しいローカル再生アドレスを取得できます:
javascript
function getP2pUrl(url : string, videoId:string|null=null, mimeType:string|null=null) : stringパラメータの説明:
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| url | string | はい | 変換前の元の再生アドレス |
| videoId | string | いいえ | この引数を渡すと、videoIdを使ってchannelIdを構築します。他のプラットフォームと一致させる必要があります |
| mimeType | string | いいえ | ".m3u8"や".mpd"の拡張子がないurlに使用します。文字列"m3u8"または"mpd"を渡します |
P2pEngine API
javascript
//本プラグインの現在のバージョン番号。
function getP2pEngineVersion():string
//CDNByeのバックエンドと接続が確立されているかどうか。
function p2pIsConnected():boolean
//P2Pアクセラレーションを即座に停止し、リソースを解放します。通常はアプリ終了時にのみ呼び出せば十分です。SDKは「遅延解放」戦略を採用しており、p2pを再起動する際にのみリソースが解放されます。性能の低いデバイスでは再生開始までの時間が顕著に長くなる可能性があるため、動画再生前に事前に engine.stopP2p() を呼び出すことを推奨します。
function stopP2p():void
//P2Pアクセラレーションサービスを再起動します。通常は呼び出す必要はありません。
function restartP2p():boolean
//ピア接続のidを取得します。
function peerId():string
//tsおよびm3u8をリクエストする際のHTTPリクエストヘッダーを動的に設定します。
function setHttpHeadersForHls(headers: Map<String, String>):void
//Dashファイルをリクエストする際のHTTPリクエストヘッダーを動的に設定します。Androidのみ
function setHttpHeadersForDash(headers: Map<String, String>):void
//実行時に動的にP2Pを無効化します。次のメディアファイルを再生する際に反映されます。
function disableP2p():void
//実行時に動的にP2Pを有効化します。次のメディアファイルを再生する際に反映されます。
function enableP2p():void
//P2Pを停止し、プロキシサーバーを終了します。
function shutdownP2p():voidP2P統計
typescript
import { onP2pStats, StatsObject } from "@/uni_modules/cdnbye-swarmcloud";
onReady() {
onP2pStats((stats: StatsObject) => {
console.log(stats.serverConnected)
console.log(stats.httpDownloaded)
console.log(stats.p2pDownloaded)
console.log(stats.p2pUploaded)
console.log(stats.peers)
})
}WARNING
ダウンロード・アップロードデータ量の単位はKBです。
動的なm3u8パスの問題を解決する
一部のストリーミング配信事業者のm3u8は動的に生成されており、ノードごとにm3u8のアドレスが異なります。例えばexample.com/clientId1/streamId.m3u8とexample.com/clientId2/streamId.m3u8のようになります。本プラグインはデフォルトでm3u8のアドレス(クエリパラメータを除いたもの)をchannelIdとして使用します。このような場合、実際に同じライブ配信/動画を視聴しているノードを同じチャンネルに配置するために、共通のchannelIdを構築する必要があります。channelIdの構築方法は以下の通りです:
typescript
// urlに基づいてvideoIdを構築
const videoId = extractVideoIdFromUrl(originalUrl); // extractVideoIdFromUrl は自身で定義する必要があり、url内の動画IDを抽出して結果として返すことができます
const url = getP2pUrl(originalUrl, videoId);WARNING
他のプラットフォームと相互接続する場合は、両者が同じ token と channelId を持つことを必ず確認してください。
HTTPリクエストヘッダーの設定
不正リンク防止や統計上の必要性から、一部のHTTPリクエストに referer や User-Agent などのヘッダー情報を追加する必要がある場合、httpHeadersForHls で設定できます:
typescript
import { ConfigOptions,initP2p,getP2pUrl,getP2pEngineVersion,p2pIsConnected,stopP2p, onP2pStats, StatsObject, setHttpHeadersForHls } from "@/uni_modules/cdnbye-swarmcloud";
const headers = new Map<string, string>();
headers.set('referer' ,'xxx');
headers.set('User-Agent' ,'xxx');
setHttpHeadersForHls(headers);
const url = getP2pUrl(originalUrl);