Test de vitesse

Facebook possède des serveurs de réception vidéo dans le monde entier qui permettent de diffuser vos vidéos en direct. Utilisez les tests de vitesse pour choisir le meilleur serveur de réception vidéo pour votre diffusion.

La réalisation d’un test de vitesse consiste à envoyer un fichier binaire à un ensemble d’URL de destination dans l’ordre dans lequel elles ont été reçues. Chaque test évalue votre connectivité à un serveur de réception vidéo Facebook donné. Le serveur répond en fournissant des informations sur la vitesse de connexion mesurée, le temps nécessaire à l’envoi et à la réception et d’autres facteurs importants. Le fait d’inclure ces résultats dans chaque test successif permet à Facebook de choisir le prochain ensemble d’URL de destination jusqu’à ce que le meilleur serveur de réception soit identifié. L’API répond par un token cible. Lorsque vous avez un token cible, incluez-le chaque fois que vous créez une diffusion de vidéo en direct et l’API répondra par une URL de streaming optimisée pour votre connexion.

Vous pouvez également utiliser l’outil Facebook Live Ingests à la place de l’API du test de vitesse pour déterminer les meilleurs serveurs de réception pour votre diffusion de vidéo en direct.

Étape 1 : Démarrer une nouvelle session de test

Pour démarrer une nouvelle session de test, envoyez une requête à :

GET /traffic_speedtest?fields=target_token,next_tests,upload_bandwidth_estimate_bits_per_second

Le point de terminaison répond par un objet JSON contenant une liste de cas test. Chaque cas test contient une URL de destination et un nombre d’octets.

Exemple de requête

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

Exemple de réponse

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

Étape 2 : Tester chaque URL de destination

Pour tester chaque cas, importez un fichier binaire de la taille désignée par le nombre d’octets dans l’URL de destination correspondante.

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

Exemple de requête

Dans cet exemple, {binary-file} est un fichier contenant 3 145 728 octets aléatoires, ce qui correspond au nombre d’octets de la réponse.

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

Exemple de réponse

Une chaîne opaque est renvoyée.

eyJzdGFydFRpbWVNUyI6IjE1NjIxMDk4NDg3ODAiLCJydHQiO...   //Truncated for brevity

Créez un tableau nommé previous_results contenant un objet JSON qui comprend les propriétés et valeurs suivantes :

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

Remarque : traitez result_string comme une chaîne opaque. Ne tentez pas d’interpréter la réponse du point de terminaison de test. Si l’encodeur ne parvient pas à atteindre l’URL de destination, omettez cette entrée unique dans la liste previous_results.

ParamètreDescription

{destination-url}

URL de destination que vous avez testée.

{opaque-string}

Chaîne de résultat du test renvoyée par l’URL.

Exemple de tableau avec réponse de test unique

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

Ajoutez chaque URL de destination et testez la réponse dans le tableau previous_results.

Avertissements

  • Exécutez chaque test selon son ordre de réception. L’exécution de tests en parallèle est susceptible de réduire la précision des résultats.
  • Utilisez toujours le nombre d’octets spécifié dans chaque cas test. Certains cas test nécessitent différents nombres d’octets. Par exemple, un cas test précoce peut utiliser une petite importation pour réduire l’ensemble des emplacements éligibles, tandis que les cas test ultérieurs peuvent utiliser des importations plus importantes pour établir des estimations plus fiables.
  • Utilisez toujours des octets aléatoires pour vous assurer que la demande ne peut pas être compressée. Les octets non aléatoires peuvent être compressibles, et les demandes compressées réduisent la précision des tests de vitesse.

Étape 3 : Demander un autre ensemble d’URL de destination

Après avoir testé le premier ensemble d’URL, demandez un autre ensemble et incluez les résultats précédents.

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

Remplacez {previous-results} par le tableau des résultats du test que vous avez stockés.

Exemple de requête

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

Le point de terminaison renvoie une nouvelle liste de cas test ou un token cible. S’il répond avec plus de cas, testez chaque cas, puis demandez un autre ensemble. Continuez ainsi jusqu’à ce qu’il réponde par un token. S’il répond par un token, cela indique que la session de test est terminée.

Exemple de réponse par un token

{
 "target_token": "atl",   //Testing is complete
 "upload_bandwidth_estimate_bits_per_second": 173557406  //Suggested bps
}
PropriétéDescription

target_token

Chaîne à inclure lors de l’utilisation de l’API Live Video. Lorsqu’un token cible est inclus, l’API Live Video renverra des URL de streaming optimisées pour votre connexion.

upload_bandwidth_estimate_bits_per_second

Bande passante amont estimée depuis l’appareil vers Facebook. Vous pouvez l’utiliser pour configurer le débit maximal pour votre encodeur vidéo. Par exemple, si cette valeur est 10000000, vous pouvez configurer l’encodeur pour générer un streaming vidéo de 8 Mbit/s.

Remarque : la bande passante d’importation est une estimation et elle peut varier considérablement en cas de changement des conditions réseau. Par exemple, si le streaming est envoyé à un emplacement différent pour gérer la capacité ou pour éviter des points de défaillance partagés entre les streamings d’entrée, la bande passante d’importation peut changer.

Étape 4 : Obtenir une URL de streaming optimale

Créez une diffusion de vidéo en direct en procédant normalement, puis demandez l’ID de vidéo en direct et incluez votre token cible :

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

Le point de terminaison répond par une URL de streaming sécurisée optimisée pour votre connexion.

Exemple de requête

Dans cet exemple, le token cible renvoyé par le test de vitesse est atl.

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

Exemple de réponse

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

Recommandations

Exécutez chaque cas test selon son ordre de réception, de manière séquentielle, et non en parallèle. L’exécution simultanée de plusieurs cas test de vitesse donnera des résultats imprécis.

Lors de l’utilisation de tokens d’authentification pour obtenir des URL de streaming, démarrez une nouvelle session de test de vitesse pour chaque diffusion de vidéo en direct. Ne réutilisez pas d’anciens résultats de test. Les URL test, les réponses d’URL test et les tokens cible peuvent changer.

Nous recommandons de réexécuter un test de vitesse si l’une des situations suivantes se produit :

  • La connectivité de votre réseau change. Par exemple, lors du passage du Wi-Fi à une connexion filaire.
  • Votre application a été inactive pendant un certain temps.
  • Votre application détecte que les conditions du réseau ont changé. Par exemple, les tampons d’envoi se remplissent, ou vous ne pouvez pas streamer à la bande passante estimée.
  • La qualité de votre connexion change. Par exemple, une liaison entre deux ISP devient encombrée.

Si un nouveau token cible est renvoyé, cessez d’utiliser l’URL de streaming actuelle et commencez à utiliser la nouvelle URL de streaming renvoyée par le nouveau token.

Si les conditions du réseau sont trop mauvaises pour fournir un streaming fiable, votre application doit signaler à l’éditeur vidéo qu’il peut améliorer sa connectivité au réseau. Par exemple, assurez-vous qu’aucune autre application n’utilise la bande passante, passez d’une connexion sans fil à une connexion filaire, augmentez votre bande passante Internet ou demandez à votre fournisseur d’accès à Internet de vous connecter directement à Facebook.