Facebookでは、ライブ動画を一斉配信するためのライブ動画取り込みサーバーを世界中に配置しています。速度テストを利用して、自身の一斉配信に最適な動画取り込みサーバーを選択してください。
速度テストを行うには、バイナリーファイルを宛先URLのセットに送信します。その際に、宛先URLを受け取った順に送ります。それぞれのテストは、特定のFacebook動画取り込みサーバーへの接続性を評価します。サーバーの応答には、測定された接続速度、送信してから受信するまでにかかった時間、その他の重要な要素が含まれています。これらの結果を後続の各テストに含めていくと、次の宛先URLのセットが選択され、最適な取り込みサーバーが決定します。そうすると、APIはターゲットトークンを含めた応答を返します。ターゲットトークンが得られたら、ライブ動画一斉配信を作成するときに常にそのトークンを含めます。そうするとAPIは、あなたの接続に最適なストリーミングURLを含めた応答を返します。
速度テストAPIの代わりにFacebook Live Ingestsツールを使用して、自身のライブ動画一斉配信に最適な取り込みサーバーを判断することもできます。
新規テストセッションを開始するには、次にリクエストを送信します:
GET /traffic_speedtest?fields=target_token,next_tests,upload_bandwidth_estimate_bits_per_second
エンドポイントの応答には、テストケースのリストを含んだJSONオブジェクトが含まれます。それぞれのテストケースには、宛先URLとバイトカウントが含まれます。
リクエストの例
curl -i -X GET "https://graph.facebook.com/v3.3/traffic_speedtest \ ?fields=target_token,next_tests,upload_bandwidth_estimate_bits_per_second \ &access_token={access-token}"
応答の例
{ //Formatted for clarity "next_tests": [ { "byte_count": 3145728, "url": "https://edge-star-kut.xx.fbcdn.net/upload-speed-test-api" }, { "byte_count": 3145728, "url": "https://edge-star-mad.xx.fbcdn.net/upload-speed-test-api" }, { "byte_count": 3145728, "url": "https://edge-star-ort.xx.fbcdn.net/upload-speed-test-api" }, { "byte_count": 3145728, "url": "https://edge-star-eze.xx.fbcdn.net/upload-speed-test-api" } ] }
それぞれのケースをテストするには、byte_countで指定されたサイズのバイナリーファイルを対応する宛先URLにアップロードします。
POST /{destination-url}/upload-speed-test
リクエストの例
この例では、{binary-file}
は3145728個のランダムなバイトを含むファイルで、応答のバイトカウントと一致します。
curl --data-binary @{binary-file} https://edge-star-kut.xx.fbcdn.net/upload-speed-test-api
応答の例
意味がない不定の文字列が返されます。
eyJzdGFydFRpbWVNUyI6IjE1NjIxMDk4NDg3ODAiLCJydHQiO... //Truncated for brevity
previous_results
という名前の配列を作成し、次のプロパティと値から成るJSONオブジェクトを含めます:
previous_results=[ { "test_url": "{destination-url}", "result_string": "{opaque-string}" } ]
注: result_string
を、意味がない不定の文字列として扱います。テストエンドポイントからの応答を解釈しようとしないでください。エンコーダーがリンク先URLに到達しない場合、previous_results
リストのその1つのエントリは省かれます。
パラメーター | 説明 |
---|---|
| テストした宛先URL。 |
| URLから返されたテスト結果文字列。 |
単一のテスト応答の配列の例
previous_results=[ // JSON formatted for clarity { "test_url": "https://edge-star-kut.xx.fbcdn.net/upload-speed-test-api", "result_string": "eyJzdGFydFRpbWVNUyI6IjE1NjIxMDk4NDg3ODAiLCJydHQiO..." //Truncated for brevity } ]
各宛先URLとテストの応答をprevious_results
配列に追加します。
警告
最初のURLセットのテスト後、別のセットをリクエストし、以前の結果を含めます。
GET /traffic_speedtest?fields=target_token,next_tests,upload_bandwidth_estimate_bits_per_second&previous_results={previous-results}
{previous-results}
を、保存したテスト結果の配列に置き換えます。
リクエストの例
curl -i -X GET 'https://graph.facebook.com/v3.3/traffic_speedtest \ ?fields=target_token,next_tests,upload_bandwidth_estimate_bits_per_second \ &access_token={access-token} \ &previous_results=[ // JSON formatted for clarity { "test_url":"https://edge-star-kut.xx.fbcdn.net/upload-speed-test-api", "result_string": { "eyJzdGFydFRpbWVNUyI6IjE1NjIxMDk4NDg3ODAiLCJydHQiO..." //Truncated for brevity } }, { "test_url":"https://edge-star-bru.xx.fbcdn.net/upload-speed-test-api", "result_string": { "eyJzdGFydFRpbWVNUyI6IjE1NjIxMDk4NDg3ODAiLCJydHQiO..." //Truncated for brevity } }, ... //Truncated for brevity ]'
エンドポイントはテストケースの新しいリストかターゲットトークンを返します。新しいケースが返された場合は、それぞれのケースをテストし、その後別のセットをリクエストします。トークンが返されるまで、これを繰り返します。トークンが返されたら、テストセッションの完了です。
トークンを含む応答の例
{ "target_token": "atl", //Testing is complete "upload_bandwidth_estimate_bits_per_second": 173557406 //Suggested bps }
プロパティ | 説明 |
---|---|
| ライブ動画APIを使用するときに含める文字列。ターゲットトークンが含まれていると、ライブ動画APIはあなたの接続に最適なストリーミングURLを返します。 |
| デバイスからFacebookへの推定アップストリーム帯域幅。この値を使用して、使用する動画エンコーダーの最大ビットレートを構成できます。たとえば、この値が10000000の場合、エンコーダーが8Mbps動画ストリームを出力するように構成できます。 |
注: アップロード帯域幅は推定であり、ネットワークの状況の変化によって劇的に変化する可能性があります。たとえば、容量を管理するため、または入力ストリーミング間で障害点を共有しないようにするために、ストリーミングが異なるロケーションに送信されている場合、アップロード帯域幅は変化する可能性があります。
ライブ動画一斉配信を通常通りの手順で作成してから、ライブ動画IDをクエリしてターゲットトークンを含めます:
GET /{broadcast-id}?fields=secure_stream_url&target_token={target-token}
エンドポイントの応答には、あなたの接続に最適な、安全なストリーミングURLが含まれます。
リクエストの例
この例では、速度テストで返されたtarget_tokenはatlです。
curl -i -X GET \ "https://graph.facebook.com/v3.3/{broadcast-id} \ ?fields=secure_stream_url&target_token=atl \ &access_token={access-token}"
応答の例
{ “secure_stream_url”: “rtmps://...”, //Optimized stream URL “id”: “{broadcast-id}” }
速度テストの各ケースは、受信した順番通りに(並行ではなく)実行します。複数の速度テストケースを同時に行うと、結果が不正確になります。
ターゲットトークンを使用してストリーミングURLを取得する際には、ライブ動画一斉配信ごとに新しい速度テストセッションを開始してください。古いテスト結果を再利用しないでください。テストURL、テストURLの応答、ターゲットトークンは変化する可能性があります。
次のいずれかの条件が発生した場合は、速度テストを再実行することをおすすめします:
新しいターゲットトークンが返されたら、現在のストリーミングURLの使用を中止し、新しいトークンによって返された新しいストリーミングURLの使用を開始してください。
安定したストリーミングが提供できないほどネットワークの状況が悪い場合、アプリから動画パブリッシャーに警告を出し、ネットワーク接続を改善できるようにしてください。たとえば、他のアプリが帯域幅を使用していないことを確認する、無線接続から有線接続に切り替える、アプリのインターネット帯域幅を増やす、またはFacebookに直接接続するようインターネットプロバイダーに依頼するなどの方法で改善できます。