Facebook 在世界各地設有直播視像擷取伺服器,用於播放您的直播視像。使用速度測試來選擇最適合您直播的視像擷取伺服器。
在執行速度測試的過程中,系統會以接收一組目標網址的次序將二進位檔案傳送至這些網址。每次測試都會評估您與特定 Facebook 視像擷取伺服器的連接情況。伺服器的回應中會包含測量得出的連線速度詳細資料、傳送和接收操作的所需時間,以及其他重要因素。透過在每個連續的測試中包含這些結果,Facebook 便可以選擇下一組目標網址,直到確定最佳擷取伺服器為止。然後,API 的回應中會包含一個目標憑證。獲得目標憑證後,當您每次建立直播視像時都加入憑證,API 的回應中便會包含一個已為您的連接優化的串流影片網址。
您還可以使用 Facebook Live 擷取工具代替速度測試 API,為您的直播視像確定最佳擷取伺服器。
如要開始新的測試作業階段,請傳送要求至:
GET /traffic_speedtest?fields=target_token,next_tests,upload_bandwidth_estimate_bits_per_second
端點回應中包含一個含有測試案例清單的 JSON 物件。每個測試案例會包含一個目標網址和一個位元計數。
要求範例
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 指定大小的二進位檔案上載至其相應目標網址。
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
視為不透明字串。請勿嘗試解讀來自測試端點的回應。如果編碼器無法覆蓋目標網址,則忽略 previous_results
清單中的單一條目。
參數 | 描述 |
---|---|
| 您測試的目標網址。 |
| 網址傳回的測試結果字串。 |
含有單個測試回應的陣列範例
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 } ]
向 previous_results
陣列附加每個目標網址和測試回應。
注意事項
測試第一組網址後,要求獲得另一組網址並包含之前的結果。
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 將傳回已為您的連接優化的串流影片網址。 |
| 從裝置到 Facebook 的預計上游頻寬。您可以使用這個頻寬設定來配置視訊轉碼器的最大位元速率。例如,如果這個值為 10000000,您可以將編碼器配置為輸出 8 Mbps 的影片串流。 |
請注意:上載頻寬是一個預計值,可能會隨著網絡狀況的變化而大幅變更。例如,如果將串流影片傳送至其他位置,從而管理容量或避免輸入串流影片之間出現共同故障點,則上載頻寬可能會有變化。
如常建立直播視像,然後查詢直播視像編號並加入您的目標憑證:
GET /{broadcast-id}?fields=secure_stream_url&target_token={target-token}
端點回應中會包含一個已為您的連接優化的安全串流影片網址。
要求範例
在這個範例中,速度測試傳回的 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}” }
以接收次序執行每個速度測試案例(按次序執行,而非同步執行)。同時執行多個速度測試案例會得出不正確的結果。
使用目標憑證獲取串流影片網址時,為每個直播視像開始新的速度測試作業階段。不要重用舊的測試結果。測試網址、測試網址回應和目標憑證可能會有變化。
如果出現以下任何情況,我們建議重複執行速度測試:
傳回新的目標憑證後,停止使用目前的串流影片網址,並開始使用新憑證傳回的新串流影片網址。
如果網絡狀況太差,難以提供可靠的串流影片,您的應用程式應警告視像發佈者,以便他們改善其網絡連線狀況。例如,確保沒有其他應用程式正在使用頻寬、從無線連線切換至有線連線、提高互聯網頻寬,或要求互聯網供應商直接連線至 Facebook。