Для передачи ваших видеотрансляций используются видеосерверы Facebook по всему миру. Вы можете протестировать скорость загрузки, чтобы выбрать наиболее подходящий сервер.
Для тестирования скорости на ряд целевых URL в порядке их получения поочередно отправляется двоичный файл. При этом оценивается подключение к каждому видеосерверу Facebook. Сервер возвращает измеренное значение скорости подключения, время, затраченное на отправку и получение данных, и другие важные показатели. Используя результаты текущего теста, система Facebook выбирает следующий набор целевых URL, пока не будет определен наилучший видеосервер. После этого API возвращает целевой маркер. Если указать его при создании видеотрансляции, API вернет URL трансляции, оптимизированный для вашего подключения.
Чтобы выбрать оптимальные серверы, вместо API Speed Test можно также использовать инструмент 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" } ] }
Чтобы протестировать каждый вариант, загрузите на соответствующий URL двоичный файл такого размера, который указан в параметре byte_count.
POST /{destination-url}/upload-speed-test
Пример запроса
В этом примере {binary-file}
— это файл, содержащий 3 145 728 случайных байт, т. е. именно то количество, которое указано в ответе.
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
.
Параметр | Описание |
---|---|
| Тестируемый целевой 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 ]'
Конечная точка вернет либо новый список тестовых вариантов, либо целевой маркер. В первом случае протестируйте каждый URL, а затем запросите ещё один набор. Повторяйте эту процедуру, пока не получите маркер. Если конечная точка возвращает маркер, это означает, что сеанс тестирования завершен.
Пример ответа с маркером
{ "target_token": "atl", //Testing is complete "upload_bandwidth_estimate_bits_per_second": 173557406 //Suggested bps }
Свойство | Описание |
---|---|
| Строка, включаемая в вызовы API Live Video. При использовании целевого маркера API Live Video возвращает URL трансляции, оптимизированные для вашего подключения. |
| Прогнозируемая пропускная способность при передаче данных с устройства на Facebook. Это значение можно использовать для настройки скорости потока в кодировщике видео. Например, если оно равно 10 000 000, видеотрансляция может иметь скорость потока 8 Мбит/с. |
Примечание. Указывается приблизительная пропускная способность загрузки. Реальное значение может существенно изменяться при изменении состояния сети. Причиной может быть, например, перенаправление трансляции на другой сервер в связи с управлением трафиком или предотвращение появления единой точки отказа.
Создайте видеотрансляцию как обычно, а затем запросите ее 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 трансляции и перейти на новый.
Если из-за проблем с сетью надежная трансляция невозможна, приложение должно предупреждать того, кто публикует видео, о том, что качество подключения можно улучшить. Для этого можно, например, запретить другим приложениям передавать трафик, перейти с беспроводного подключения на проводное, увеличить пропускную способность подключения к Интернету или попросить поставщика услуг Интернета установить прямое подключение к Facebook.