Facebook tiene servidores de ingesta de datos de videos en vivo en todo el mundo para transmitir este tipo de videos. La prueba de velocidad te ayuda a elegir el mejor servidor de ingesta de datos de video para tu transmisión.
Para realizar la prueba de velocidad, tienes que enviar un archivo binario a un conjunto de URL de destino en el orden en que las recibes. En cada prueba, se evalúa tu conectividad con un determinado servidor de ingesta de datos de video de Facebook. El servidor responde con información detallada sobre la velocidad de conexión detectada, el tiempo que tarda el proceso de envío y recepción, y otros factores importantes. Gracias a que estos resultados se incluyen en cada una de las pruebas, Facebook puede elegir el siguiente conjunto de URL de destino hasta determinar cuál es el mejor servidor de ingesta de datos. Luego, la API responde con un token de destino. Una vez que tengas un token de destino, inclúyelo siempre que crees una transmisión de video en vivo y la API responderá con una URL de stream optimizada para tu conexión.
También puedes usar la herramienta Facebook Live Ingests en lugar de la API de prueba de velocidad para determinar cuáles son los mejores servidores de ingesta de datos para tu transmisión de video en vivo.
Para iniciar una nueva sesión de prueba, envía una solicitud a:
GET /traffic_speedtest?fields=target_token,next_tests,upload_bandwidth_estimate_bits_per_second
El punto de conexión responderá con un objeto JSON que incluirá una lista de casos de prueba. Cada caso de prueba contiene una URL de destino y una cantidad de bytes.
Ejemplo de solicitud
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}"
Ejemplo de respuesta
{ //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" } ] }
Para probar cada caso, sube un archivo binario con el tamaño que indique el parámetro byte_count a la URL de destino que corresponda.
POST /{destination-url}/upload-speed-test
Ejemplo de solicitud
En este ejemplo, {binary-file}
es un archivo con 3.145.728 bytes aleatorios, lo cual coincide con la cantidad de bytes que se indica en la respuesta.
curl --data-binary @{binary-file} https://edge-star-kut.xx.fbcdn.net/upload-speed-test-api
Ejemplo de respuesta
Se devuelve una cadena opaca.
eyJzdGFydFRpbWVNUyI6IjE1NjIxMDk4NDg3ODAiLCJydHQiO... //Truncated for brevity
Crea una matriz llamada previous_results
que contenga un objeto JSON conformado por las siguientes propiedades y valores:
previous_results=[ { "test_url": "{destination-url}", "result_string": "{opaque-string}" } ]
Nota: Considera result_string
como una cadena opaca. No intentes interpretar la respuesta del punto de conexión de prueba. Si el codificador no puede llegar a la URL de destino, omite dicha entrada en la lista previous_results
.
Parámetro | Descripción |
---|---|
| La URL de destino que probaste. |
| La cadena de resultado de prueba que devolvió la URL. |
Ejemplo de matriz con la respuesta a una prueba
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 } ]
Agrega cada URL de destino y cada respuesta de prueba a la matriz previous_results
.
Advertencias
Después de probar el primer conjunto de URL, solicita otro conjunto e incluye los resultados anteriores.
GET /traffic_speedtest?fields=target_token,next_tests,upload_bandwidth_estimate_bits_per_second&previous_results={previous-results}
Reemplaza {previous-results}
con la matriz de resultados de prueba que guardaste.
Ejemplo de solicitud
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 ]'
El punto de conexión devolverá otra lista de casos de prueba o un token de destino. Si responde con más casos, prueba cada uno de ellos y, luego, solicita otro conjunto. Repite este proceso hasta que responda con un token. Si responde con un token, eso significa que la sesión de prueba ya finalizó.
Ejemplo de respuesta con un token
{ "target_token": "atl", //Testing is complete "upload_bandwidth_estimate_bits_per_second": 173557406 //Suggested bps }
Propiedad | Descripción |
---|---|
| Una cadena que debes incluir al usar API de video en vivo. Si se incluye un token de destino, la API de video en vivo devuelve URL de stream optimizadas para tu conexión. |
| El ancho de banda estimado de subida desde el dispositivo hacia Facebook. Puedes usar este valor para configurar la máxima velocidad de bits en tu codificador de video. Por ejemplo, si este valor es 10000000, puedes configurar la salida del codificador para que el stream de video sea de 8 Mbps. |
Nota: El ancho de banda de subida es un valor estimado y puede cambiar considerablemente si se modifican las condiciones de la red. Por ejemplo, puede cambiar si el stream se envía a otra ubicación para administrar la capacidad o para evitar que diferentes streams de entrada tengan los mismos puntos de falla.
Crea una transmisión de video en vivo como sueles hacerlo y, luego, envía una consulta con el identificador de video en vivo y el token de destino:
GET /{broadcast-id}?fields=secure_stream_url&target_token={target-token}
El punto de conexión responderá con una URL de stream segura y optimizada para tu conexión.
Ejemplo de solicitud
En este ejemplo, el valor de target_token que devuelve la prueba de velocidad es atl.
curl -i -X GET \ "https://graph.facebook.com/v3.3/{broadcast-id} \ ?fields=secure_stream_url&target_token=atl \ &access_token={access-token}"
Ejemplo de respuesta
{ “secure_stream_url”: “rtmps://...”, //Optimized stream URL “id”: “{broadcast-id}” }
Ejecuta cada caso de prueba de velocidad en el orden en que lo recibas y de manera secuencial, no en paralelo. Si ejecutas varios casos de prueba de velocidad a la vez, los resultados no serán precisos.
Cuando uses tokens de destino para obtener URL de stream, inicia una nueva sesión de prueba de velocidad por cada transmisión de video en vivo. No reutilices resultados de pruebas anteriores. Puede haber cambios en las URL de prueba, las respuestas a las URL de prueba y los tokens de destino.
Recomendamos volver a ejecutar la prueba de velocidad cada vez que ocurra alguna de las siguientes condiciones:
Cuando se devuelva un nuevo token de destino, deja de usar la URL de stream actual y comienza a usar la que devuelva el nuevo token.
Si las condiciones de red son muy deficientes para permitir un stream confiable, tu app debería advertirle al editor de videos que se podría mejorar la conectividad de red. Por ejemplo, puedes asegurarte de que ninguna otra app esté usando ancho de banda, cambiar de una conexión inalámbrica a una por cable, aumentar el ancho de banda de internet o pedirle al proveedor de internet que se conecte a Facebook directamente.