Skip to content

P2P設定

Android, iOS のP2P設定部分と型定義を参照してください。

P2pEngine

P2pEngineをインスタンス化します。呼び出しは1回だけで構いません:

typescript
import { initP2pEngine } from 'react-native-swarmcloud';
initP2pEngine(token, config)

パラメータの説明:

パラメータ必須説明
tokenstringはいSwarmCloudが発行したtoken。
configP2pConfigはいカスタム設定。

ソースの切り替え

プレイヤーが新しい再生アドレスに切り替える際は、新しい再生アドレス(m3u8)を parseStreamURL に渡すだけで、新しいローカル再生アドレスを取得できます:

typescript
import { parseStreamURL } from 'react-native-swarmcloud';
const parsedUrl = parseStreamURL(url);

P2pEngine API

typescript
/// SDKのバージョン番号
getSDKVersion(): string

/// P2pEngineをインスタンス化
initP2pEngine(token: string, config: P2pConfig): Promise<void>

/// 元の再生アドレス(m3u8)をローカルプロキシサーバーのアドレスに変換します。同時にvideoIdを渡してchannelIdの構築に使用します。
parseStreamURL(url: string, videoId: string | undefined): string;

/// tsおよびm3u8をリクエストする際のHTTPリクエストヘッダーを動的に設定します。
setHttpHeadersForHls(headers: Object): void;

/// P2P Engineの接続状態を取得します
isConnected(): boolean;

/// P2Pアクセラレーションサービスを再起動します。通常は呼び出す必要はありません。
restartP2p(): Promise<void>;

/// P2Pアクセラレーションを停止し、リソースを解放します。通常は呼び出す必要はありません。SDKは「遅延解放」戦略を採用しており、p2pを再起動する際にのみリソースが解放されます。性能の低いデバイスでは再生開始までの時間が顕著に長くなる可能性があるため、動画再生前に事前に engine.stopP2p() を呼び出すことを推奨します。
stopP2p(): Promise<void>;

/// P2P EngineのpeerIDを取得します
getPeerId(): string | undefined;

P2P統計

exampleを参照してください。

WARNING

ダウンロード・アップロードデータ量の単位はKBです。

動的なm3u8パスの問題を解決する

一部のストリーミング配信事業者のm3u8は動的に生成されており、ノードごとにm3u8のアドレスが異なります。例えばexample.com/clientId1/streamId.m3u8とexample.com/clientId2/streamId.m3u8のようになります。本プラグインはデフォルトでm3u8のアドレス(クエリパラメータを除いたもの)をchannelIdとして使用します。このような場合、実際に同じライブ配信/動画を視聴しているノードを同じチャンネルに配置するために、共通のchannelIdを構築する必要があります。channelIdの構築方法は以下の通りです:

dart
// urlに基づいてvideoIdを構築
const videoId = extractVideoIdFromUrl(originalUrl);     // extractVideoIdFromUrl は自身で定義する必要があり、url内の動画IDを抽出して結果として返すことができます
const url = parseStreamURL(originalUrl, videoId);

WARNING

他のプラットフォームと相互接続する場合は、両者が同じ token と channelId を持つことを必ず確認してください。

HTTPリクエストヘッダーの設定

不正リンク防止や統計上の必要性から、一部のHTTPリクエストに refererUser-Agent などのヘッダー情報を追加する必要がある場合、httpHeadersForHls で設定できます:

typescript
import { setHttpHeadersForHls } from 'react-native-swarmcloud';
setHttpHeadersForHls({
    "referer": "XXX",
    "User-Agent": "XXX",
});

粤ICP备18075581号