Facebook dispone di server di acquisizione di video in diretta in tutto il mondo utilizzati per trasmettere i tuoi video in diretta. Utilizza lo speed test per scegliere il miglior server di acquisizione video per la tua trasmissione.
L'esecuzione di uno speed test implica l'invio di un file binario a un insieme di URL di destinazione nell'ordine in cui sono stati ricevuti. Ogni test valuta la tua connettività a uno specifico server di acquisizione video di Facebook. Il server risponde con dettagli sulla velocità di connessione misurata, sul tempo necessario per l'invio e la ricezione e su altri fattori importanti. L'inclusione di questi risultati in ogni test successivo consente a Facebook di scegliere il gruppo successivo di URL di destinazione fino a quando non viene determinato il server di acquisizione migliore. L'API risponde quindi con un target token. Quando hai un target token, includilo ogni volta che crei una trasmissione video in diretta e l'API risponde con un URL di streaming ottimizzato per la tua connessione.
Puoi anche usare lo Strumento Facebook Live Ingests invece dell'API Speed Test per determinare i server di acquisizione ottimali per la trasmissione di video in diretta.
Per avviare una nuova sessione di test, invia una richiesta a:
GET /traffic_speedtest?fields=target_token,next_tests,upload_bandwidth_estimate_bits_per_second
L'endpoint risponde con un oggetto JSON contenente una lista di scenari di test. Ogni scenario di test contiene un URL di destinazione e un conteggio di byte.
Richiesta di esempio
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}"
Risposta di esempio
{ //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" } ] }
Per testare ogni scenario, carica un file binario della dimensione designata da byte_count nell'URL di destinazione corrispondente.
POST /{destination-url}/upload-speed-test
Richiesta di esempio
In questo esempio, {binary-file}
è un file contenente 3145728 byte casuali che corrisponde al numero di byte della risposta.
curl --data-binary @{binary-file} https://edge-star-kut.xx.fbcdn.net/upload-speed-test-api
Risposta di esempio
Viene restituita una stringa opaca.
eyJzdGFydFRpbWVNUyI6IjE1NjIxMDk4NDg3ODAiLCJydHQiO... //Truncated for brevity
Crea un array denominato previous_results
contenente un oggetto JSON composto da proprietà e valori seguenti:
previous_results=[ { "test_url": "{destination-url}", "result_string": "{opaque-string}" } ]
Nota: tratta result_string
come una stringa opaca. Non tentare di interpretare la risposta ottenuta dall'endpoint del test. Se il codificatore non è in grado di raggiungere l'URL di destinazione, ometti quella singola voce nella lista previous_results
.
Parametro | Descrizione |
---|---|
| L'URL di destinazione che hai testato. |
| La stringa del risultato del test restituita dall'URL. |
Array di esempio con singola risposta del test
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 } ]
Aggiungi ogni URL di destinazione e verifica la risposta all'array previous_results
.
Precisazioni
Dopo aver testato il primo gruppo di URL, richiedi un altro gruppo e includi i risultati precedenti.
GET /traffic_speedtest?fields=target_token,next_tests,upload_bandwidth_estimate_bits_per_second&previous_results={previous-results}
Sostituisci {previous-results}
con l'array dei risultati del test che hai memorizzato.
Richiesta di esempio
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 ]'
L'endpoint restituisce una nuova lista di scenari di test o un target token. Se risponde con più scenari, prova ciascuno di essi, quindi richiedi un altro gruppo. Continua finché non risponde con un token. Se la risposta è con un token, significa che la sessione di test è stata completata.
Esempio di risposta con token
{ "target_token": "atl", //Testing is complete "upload_bandwidth_estimate_bits_per_second": 173557406 //Suggested bps }
Proprietà | Descrizione |
---|---|
| Una stringa da includere quando si utilizzano le API Live Video. Quando viene incluso un target token, l'API Live Video restituirà URL di streaming ottimizzati per la tua connessione. |
| La larghezza di banda upstream stimata dal dispositivo a Facebook. Puoi usarla per configurare il bitrate massimo per il tuo codificatore video. Ad esempio, se questo valore è 10000000, puoi configurare il codificatore su un output di streaming video di 8 Mbps. |
Nota: la larghezza di banda in upload è una stima e potrebbe cambiare drasticamente al variare delle condizioni della rete. Ad esempio, se lo streaming viene inviato a una località diversa per gestire la capacità o per evitare punti di errore condivisi tra flussi di input, la larghezza di banda in upload potrebbe cambiare.
Crea una trasmissione video in diretta come faresti normalmente, quindi interroga l'ID video in diretta e includi il target token:
GET /{broadcast-id}?fields=secure_stream_url&target_token={target-token}
L'endpoint risponde con un URL di streaming sicuro ottimizzato per la tua connessione.
Richiesta di esempio
In questo esempio, il target_token restituito dallo speed test è atl.
curl -i -X GET \ "https://graph.facebook.com/v3.3/{broadcast-id} \ ?fields=secure_stream_url&target_token=atl \ &access_token={access-token}"
Risposta di esempio
{ “secure_stream_url”: “rtmps://...”, //Optimized stream URL “id”: “{broadcast-id}” }
Esegui gli scenari di speed test nell'ordine in cui vengono ricevuti, in sequenza, non in parallelo. L'esecuzione di più scenari di speed test contemporaneamente restituirà risultati imprecisi.
Quando utilizzi target token per ottenere gli URL di streaming, avvia una nuova sessione di speed test per ogni trasmissione video in diretta. Non riutilizzare vecchi risultati di test. Gli URL di test, le risposte degli URL di test e i target token possono cambiare.
È consigliabile ripetere lo speed test quando si verifica una delle seguenti condizioni:
Quando viene restituito un nuovo target token, interrompi l'utilizzo dell'URL di streaming corrente e inizia a utilizzare il nuovo URL di streaming restituito dal nuovo token.
Se le condizioni di rete sono troppo scarse per fornire uno streaming affidabile, la tua app dovrebbe richiedere all'editore del video di migliorare la connettività di rete. Ad esempio, assicurati che nessun'altra app utilizzi la larghezza di banda, passa da una connessione wireless a una cablata, aumenta la larghezza di banda Internet o chiedi al tuo provider Internet di eseguire la connessione direttamente a Facebook.