O Facebook tem servidores de ingestão no mundo todo para transmitir seus vídeos ao vivo. Use testes de velocidade para escolher o servidor de ingestão de vídeo mais adequado à transmissão.
Para executar um teste de velocidade, envie um arquivo binário a um conjunto de URLs de destino na ordem em que elas foram recebidas. Cada teste avalia a conectividade de um servidor específico de ingestão de vídeo do Facebook. O servidor responde com detalhes sobre a velocidade de conexão detectada, o tempo de envio e de resposta, entre outros fatores importantes. A inclusão desses resultados em cada teste sucessivo permite ao Facebook escolher o próximo conjunto de URLs de destino até que o melhor servidor de ingestão seja determinado. A seguir, a API responde com um token de destino. Depois de obter um token de destino, inclua-o sempre que criar uma transmissão de vídeo ao vivo para que a API responda com a URL de stream ideal para a conexão.
Também é possível usar a ferramenta Facebook Live Ingests em vez da API de Teste de Velocidade para determinar os servidores de ingestão ideais para a transmissão de vídeo ao vivo.
Para fazer isso, envie uma solicitação para:
GET /traffic_speedtest?fields=target_token,next_tests,upload_bandwidth_estimate_bits_per_second
O ponto de extremidade responderá com um objeto JSON contendo uma lista de casos de teste. Cada caso de teste contém uma URL de destino e uma contagem de bytes.
Exemplo de solicitação
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}"
Exemplo de resposta
{ //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 testar todos os casos, carregue um arquivo binário do tamanho designado por byte_count na URL de destino correspondente.
POST /{destination-url}/upload-speed-test
Exemplo de solicitação
Neste exemplo, {binary-file}
é um arquivo com 3.145.728 bytes aleatórios, o que corresponde à contagem de bytes da resposta.
curl --data-binary @{binary-file} https://edge-star-kut.xx.fbcdn.net/upload-speed-test-api
Exemplo de resposta
Uma string opaca é retornada.
eyJzdGFydFRpbWVNUyI6IjE1NjIxMDk4NDg3ODAiLCJydHQiO... //Truncated for brevity
Crie uma matriz chamada previous_results
contendo um objeto JSON com as seguintes propriedades e valores:
previous_results=[ { "test_url": "{destination-url}", "result_string": "{opaque-string}" } ]
Observação: considere result_string
uma string opaca. Não tente interpretar a resposta do ponto de extremidade do teste. Se o codificador não conseguir acessar a URL de destino, omita essa entrada da lista previous_results
.
Parâmetro | Descrição |
---|---|
| A URL de destino que você testou. |
| A string do resultado de teste retornado pela URL. |
Exemplo de matriz com resposta única de teste
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 } ]
Anexe cada URL de destino e resposta de teste à matriz previous_results
.
Avisos
Após testar o primeiro conjunto de URLs, solicite outro e inclua os resultados anteriores.
GET /traffic_speedtest?fields=target_token,next_tests,upload_bandwidth_estimate_bits_per_second&previous_results={previous-results}
Substitua {previous-results}
pela matriz dos resultados de teste que você armazenou.
Exemplo de solicitação
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 ]'
O ponto de extremidade retorna uma nova lista de casos de teste ou um token de destino. Se mais casos forem retornados, teste cada um deles e solicite outro conjunto. Continue fazendo isso até receber um token. Um token será retornado quando a sessão de teste for concluída.
Exemplo de resposta com token
{ "target_token": "atl", //Testing is complete "upload_bandwidth_estimate_bits_per_second": 173557406 //Suggested bps }
Propriedade | Descrição |
---|---|
| Uma string para inclusão ao usar APIs de Vídeo ao vivo. Quando um token de destino é incluído, a API de Vídeo ao vivo retorna URLs de stream otimizadas para sua conexão. |
| A largura de banda upstream estimada do dispositivo ao Facebook. Você pode usar isso para configurar a taxa de bits máxima do codificador de vídeo. Por exemplo, se esse valor for 10.000.000, você poderá configurar o codificador para uma saída de stream de vídeo de 8 Mbps. |
Observação: a largura de banda de carregamento é uma estimativa e pode mudar drasticamente conforme houver alterações nas condições da rede. Por exemplo, a largura de banda de carregamento poderá mudar se o stream for enviado a uma localização diferente para gerenciar a capacidade ou evitar pontos de falha em comum entre streams de entrada.
Crie uma transmissão de vídeo ao vivo normalmente. Em seguida, consulte a identificação do vídeo ao vivo e inclua o token de destino:
GET /{broadcast-id}?fields=secure_stream_url&target_token={target-token}
O ponto de extremidade retorna uma URL de stream protegida e otimizada para sua conexão.
Exemplo de solicitação
Neste exemplo, "atl" é o target_token retornado pelo teste de velocidade.
curl -i -X GET \ "https://graph.facebook.com/v3.3/{broadcast-id} \ ?fields=secure_stream_url&target_token=atl \ &access_token={access-token}"
Exemplo de resposta
{ “secure_stream_url”: “rtmps://...”, //Optimized stream URL “id”: “{broadcast-id}” }
Execute cada caso de teste de velocidade na mesma ordem em que recebê-los e em sequência, não em paralelo. A execução de diversos casos de teste de velocidade ao mesmo tempo levará a resultados imprecisos.
Quando usar tokens de destino para obter URLs de stream, inicie uma nova sessão de teste de velocidade para cada transmissão de vídeo ao vivo. Não reutilize resultados de testes antigos. Pode haver alterações nas URLs de teste, nas respostas das URLs de teste e nos tokens de destino.
Recomendamos refazer o teste de velocidade quando uma ou mais das seguintes situações acontecerem:
Quando um novo token de destino for retornado, pare de usar a URL de stream atual e comece a usar a URL nova retornada pelo token.
Se as condições da rede forem precárias demais para oferecer um stream confiável, o aplicativo deverá solicitar que o editor do vídeo melhore a conectividade de rede. Por exemplo, verifique se nenhum outro aplicativo está usando a largura de banda, troque a conexão sem fio por uma com fio, aumente a largura de banda da internet ou solicite ao seu provedor de internet uma conexão direta com o Facebook.