Thử nghiệm tốc độ

Facebook có các máy chủ xử lý video trực tiếp trên khắp thế giới nhằm hỗ trợ bạn phát video trực tiếp. Hãy dùng tính năng thử nghiệm tốc độ để chọn máy chủ xử lý video tốt nhất cho buổi phát trực tiếp của bạn.

Quá trình thử nghiệm tốc độ bao gồm việc gửi file nhị phân đến một nhóm URL đích theo thứ tự nhận được. Mỗi thử nghiệm sẽ đánh giá khả năng kết nối với máy chủ xử lý video cụ thể của Facebook. Máy chủ sẽ trả về thông tin chi tiết liên quan đến tốc độ kết nối đo được, thời gian cần để gửi và nhận cũng như các yếu tố quan trọng khác. Khi thêm những kết quả này vào từng thử nghiệm liên tiếp, Facebook có thể chọn nhóm URL đích tiếp theo cho đến khi xác định được máy chủ xử lý tốt nhất. Sau đó, API sẽ trả về mã đích. Sau khi bạn có mã đích, hãy thêm mã này mỗi khi bạn tạo buổi phát video trực tiếp và API sẽ trả về URL của video đang phát được tối ưu hóa cho kết nối của bạn.

Bạn cũng có thể sử dụng Công cụ xử lý Facebook Live thay cho API Thử nghiệm tốc độ để xác định máy chủ xử lý tối ưu cho buổi phát video trực tiếp của bạn.

Bước 1: Bắt đầu buổi phát thử nghiệm mới

Để bắt đầu buổi phát thử nghiệm mới, hãy gửi yêu cầu đến:

GET /traffic_speedtest?fields=target_token,next_tests,upload_bandwidth_estimate_bits_per_second

Điểm cuối sẽ trả về đối tượng JSON có chứa danh sách các trường hợp thử nghiệm. Mỗi trường hợp thử nghiệm sẽ có URL đích và số byte.

Ví dụ về yêu cầu

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}"

Ví dụ về phản hồi

{                        //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"
   }
 ]
}

Bước 2: Thử nghiệm từng URL đích

Để thử nghiệm từng trường hợp, hãy tải file nhị phân có kích thước được chỉ định theo byte_count lên URL đích tương ứng.

POST /{destination-url}/upload-speed-test

Ví dụ về yêu cầu

Trong ví dụ này, {binary-file} là một file chứa 3145728 byte ngẫu nhiên khớp với số byte trong phần phản hồi.

curl --data-binary @{binary-file} https://edge-star-kut.xx.fbcdn.net/upload-speed-test-api

Ví dụ về phản hồi

Một chuỗi mờ sẽ được trả về.

eyJzdGFydFRpbWVNUyI6IjE1NjIxMDk4NDg3ODAiLCJydHQiO...   //Truncated for brevity

Tạo mảng có tên previous_results chứa đối tượng JSON bao gồm các thuộc tính và giá trị sau đây:

previous_results=[
 {
   "test_url": "{destination-url}",
   "result_string": "{opaque-string}"
 }
]

Lưu ý: Hãy xem result_string là một chuỗi mờ. Không cố diễn giải thông tin phản hồi từ điểm cuối thử nghiệm. Nếu bộ mã hóa không thể truy cập vào URL đích, hãy loại bỏ mục duy nhất đó trong danh sách previous_results.

Thông sốMô tả

{destination-url}

URL đích bạn đã thử nghiệm.

{opaque-string}

Chuỗi kết quả thử nghiệm do URL trả về.

Ví dụ về mảng có thông tin phản hồi thử nghiệm duy nhất

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
 }
]

Thêm từng URL đích và thông tin phản hồi thử nghiệm vào mảng previous_results.

Cảnh báo

  • Tiến hành từng thử nghiệm theo thứ tự nhận được. Việc tiến hành đồng thời nhiều thử nghiệm có thể làm giảm độ chính xác của kết quả.
  • Luôn sử dụng số byte đã chỉ định trong mỗi trường hợp thử nghiệm. Một vài trường hợp thử nghiệm có thể yêu cầu số byte khác. Ví dụ: một trường hợp thử nghiệm ban đầu có thể sử dụng file tải lên nhỏ để thu hẹp nhóm vị trí đủ điều kiện, trong khi các trường hợp thử nghiệm sau này có thể sử dụng file tải lên lớn hơn để thiết lập số liệu ước tính đáng tin cậy hơn.
  • Luôn sử dụng số byte ngẫu nhiên để đảm bảo không thể nén yêu cầu. Số byte không phải ngẫu nhiên có thể nén được và việc nén yêu cầu sẽ làm giảm độ chính xác của quá trình thử nghiệm tốc độ.

Bước 3: Yêu cầu một nhóm URL đích khác

Sau khi thử nghiệm nhóm URL đầu tiên, hãy yêu cầu một nhóm khác và thêm các kết quả trước đó.

GET /traffic_speedtest?fields=target_token,next_tests,upload_bandwidth_estimate_bits_per_second&previous_results={previous-results}

Thay thế {previous-results} bằng mảng kết quả thử nghiệm mà bạn đã lưu trữ.

Ví dụ về yêu cầu

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
 ]'

Điểm cuối sẽ trả về danh sách các trường hợp thử nghiệm mới hoặc mã đích. Nếu điểm cuối trả về nhiều trường hợp khác, hãy thử nghiệm từng trường hợp, sau đó yêu cầu một nhóm khác. Hãy tiếp tục việc này cho đến khi điểm cuối trả về mã. Nếu điểm cuối trả về mã, tức là buổi phát thử nghiệm đã hoàn tất.

Ví dụ về phản hồi có mã

{
 "target_token": "atl",   //Testing is complete
 "upload_bandwidth_estimate_bits_per_second": 173557406  //Suggested bps
}
Thuộc tínhMô tả

target_token

Một chuỗi sẽ thêm khi sử dụng API Video trực tiếp. Khi một mã đích được thêm, API Video trực tiếp sẽ trả về URL của video đang phát được tối ưu hóa cho kết nối của bạn.

upload_bandwidth_estimate_bits_per_second

Băng thông tải từ thiết bị lên Facebook theo ước tính. Bạn có thể sử dụng thuộc tính này để đặt cấu hình tốc độ bit tối đa cho bộ mã hóa video của mình. Ví dụ: nếu giá trị này là 10.000.000, bạn có thể đặt cấu hình bộ mã hóa để phát video trực tiếp ở tốc độ 8Mb/giây.

Lưu ý: Băng thông tải lên là số liệu ước tính và có thể thay đổi đáng kể khi điều kiện mạng thay đổi. Ví dụ: nếu video đang phát được gửi đến vị trí khác để kiểm soát công suất hoặc để tránh điểm tới hạn chung giữa các video đang phát ở đầu vào, băng thông tải lên có thể thay đổi.

Bước 4: Lấy URL tối ưu của video đang phát

Tạo buổi phát video trực tiếp như bình thường, sau đó truy vấn ID video trực tiếp và thêm mã đích của bạn:

GET /{broadcast-id}?fields=secure_stream_url&target_token={target-token}

Điểm cuối sẽ trả về URL bảo mật của video đang phát được tối ưu hóa cho kết nối của bạn.

Ví dụ về yêu cầu

Trong ví dụ này, target_token mà quá trình thử nghiệm tốc độ trả về là atl.

curl -i -X GET \
"https://graph.facebook.com/v3.3/{broadcast-id} \
  ?fields=secure_stream_url&target_token=atl \
  &access_token={access-token}"

Ví dụ về phản hồi

{
 “secure_stream_url”: “rtmps://...”,  //Optimized stream URL
 “id”: “{broadcast-id}”
}

Cách làm tốt nhất

Tiến hành lần lượt từng trường hợp thử nghiệm tốc độ theo thứ tự nhận được chứ không phải đồng thời. Việc tiến hành đồng thời nhiều trường hợp thử nghiệm tốc độ sẽ dẫn đến kết quả không chính xác.

Khi sử dụng mã đích để lấy URL của video đang phát, hãy bắt đầu buổi phát thử nghiệm tốc độ mới cho từng buổi phát video trực tiếp. Không sử dụng lại kết quả thử nghiệm cũ. URL thử nghiệm, thông tin phản hồi URL thử nghiệm và mã đích có thể thay đổi.

Bạn nên tiến hành lại quá trình thử nghiệm tốc độ trong bất kỳ điều kiện nào sau đây:

  • Khả năng kết nối mạng của bạn thay đổi. Ví dụ: chuyển từ mạng Wi-Fi sang kết nối có dây.
  • Ứng dụng của bạn không hoạt động trong một khoảng thời gian.
  • Ứng dụng của bạn nhận thấy các điều kiện mạng đã thay đổi. Ví dụ: bộ đệm gửi đang đầy hoặc bạn không thể phát trực tiếp ở băng thông ước tính.
  • Chất lượng kết nối của bạn thay đổi. Ví dụ: liên kết giữa 2 nhà cung cấp dịch vụ Internet (ISP) bị nghẽn.

Khi mã đích mới được trả về, hãy ngừng sử dụng URL hiện tại của video đang phát và bắt đầu dùng URL mới của video đang phát do mã mới trả về.

Nếu điều kiện mạng quá kém để phát trực tiếp một cách ổn định, ứng dụng của bạn sẽ cảnh báo cho người đăng video để họ cải thiện khả năng kết nối mạng. Ví dụ: đảm bảo không có ứng dụng nào khác đang sử dụng băng thông, chuyển từ kết nối không dây sang kết nối có dây, tăng băng thông Internet hoặc yêu cầu nhà cung cấp dịch vụ Internet kết nối trực tiếp với Facebook.