Pianificazione delle trasmissioni in diretta

La programmazione di un video in diretta è stata eliminata nella versione 12.0 e sarà eliminata in tutte le versioni il 14 dicembre 2021. Le chiamate all'endpoint POST /ID/live-video con il parametro planned_start_time restituiranno un errore.

Puoi usare l'API Live Video per creare trasmissioni di video in diretta che saranno trasmesse a una determinata ora, per una durata massima di sette giorni dalla data di creazione.

Pianificazione di una trasmissione in diretta

Per trasmettere un video in diretta con una data di inizio futura su un profilo utente, una Pagina, un gruppo o un evento, invia una richiesta a:

POST /{node-id}/live_videos?status=SCHEDULED_UNPUBLISHED&planned_start_time={start-time}

Usa il parametro planned_start_time e una marca temporale UNIX per indicare l'ora di inizio desiderata.

In questo modo viene creato un oggetto LiveVideo su un nodo targetizzato e vengono restituiti secure_stream_url e id del video in diretta. Usa l'URL di streaming sicuro con il tuo codificatore per trasmettere in streaming i dati del video in diretta all'oggetto LiveVideo all'ora di inizio pianificata o prima. La trasmissione in diretta viene visualizzata sulla sequenza temporale/sul feed del nodo all'ora di inizio pianificata fin quando vengono ricevuti dati di streaming.

Le trasmissioni in diretta pianificate possono ricevere dati di streaming in qualsiasi momento prima della data di inizio a scopo di anteprima.

Esempio di richiesta

curl -i -X POST \ 
  "https://graph.facebook.com/{page-id}/live_videos?status=SCHEDULED_UNPUBLISHED&planned_start_time=1541539800&access_token={access-token}"
GraphRequest request = GraphRequest.newPostRequest(
  accessToken,
  "/{page-id}/live_videos",
  new JSONObject("{\"status\":\"SCHEDULED_UNPUBLISHED\",\"planned_start_time\":\"1541539800\"}"),
  new GraphRequest.Callback() {
    @Override
    public void onCompleted(GraphResponse response) {
      // Insert your code here
    }
});
request.executeAsync();
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"/{page-id}/live_videos"
           parameters:@{ @"status": @"SCHEDULED_UNPUBLISHED",@"planned_start_time": @"1541539800",}
           HTTPMethod:@"POST"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    // Insert your code here
}];
FB.api(
  '/{page-id}/live_videos',
  'POST',
  {"status":"SCHEDULED_UNPUBLISHED","planned_start_time":"1541539800"},
  function(response) {
      // Insert your code here
  }
);
try {
  // Returns a `FacebookFacebookResponse` object
  $response = $fb->post(
    '/{page-id}/live_videos',
    array (
      'status' => 'SCHEDULED_UNPUBLISHED',
      'planned_start_time' => '1541539800'
    ),
    '{access-token}'
  );
} catch(FacebookExceptionsFacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(FacebookExceptionsFacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();

Esempio di risposta

{
  "id": "10214937378883406",  //LiveVideo object ID
  "stream_url": "rtmp://rtmp-api.facebook...",
  "secure_stream_url": "rtmps://rtmp-api.facebook..."  //Stream URL
}

Per ottenere una lista di trasmissioni in diretta pianificate, consulta Richiesta di trasmissioni in diretta pianificate.

Anteprima di una trasmissione in diretta

Puoi usare l'API Live Video per visualizzare un'anteprima della trasmissione in diretta di un video non pubblicato; un oggetto LiveVideo creato con status impostato su SCHEDULED_UNPUBLISHED o UNPUBLISHED.

Per visualizzare un'anteprima della trasmissione in diretta di un video non pubblicato, invia una richiesta a:

GET /{live_video_id}?fields={fields}

Usa il parametro {fields} per ottenere il valore dash_preview_url dell'oggetto LiveVideo.

Esempio di richiesta

curl -i -X GET \
 "https://graph.facebook.com/{live-video-id}
    ?fields=dash_preview_url
     &access_token={access-token}"
GraphRequest request = GraphRequest.newGraphPathRequest(
  accessToken,
  "/{live-video-id}",
  new GraphRequest.Callback() {
    @Override
    public void onCompleted(GraphResponse response) {
      // Insert your code here
    }
});

Bundle parameters = new Bundle();
parameters.putString("fields", "dash_preview_url");
request.setParameters(parameters);
request.executeAsync();
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"/{live-video-id}"
           parameters:@{ @"fields": @"dash_preview_url",}
           HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    // Insert your code here
}];
FB.api(
  '/{live-video-id}',
  'GET',
  {"fields":"dash_preview_url"},
  function(response) {
      // Insert your code here
  }
);
try {
  // Returns a `FacebookFacebookResponse` object
  $response = $fb->get(
    '/{live-video-id}',
    '{fields:dash_preview_url}',    
    '{access-token}'
  );
} catch(FacebookExceptionsFacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(FacebookExceptionsFacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();

Esempio di risposta

{
  'dash_preview_url': 'https://video.xx.fbcdn.net/...',
  'id': '{live-video-id}'
}

Restituisce dash_preview_url e id del video in diretta. Copia e incolla l'URL in uno strumento per la riproduzione DASH per visualizzare un'anteprima della trasmissione in diretta.

Sebbene visualizzare un'anteprima della trasmissione in diretta con uno strumento per la riproduzione di test di terzi sia un buon modo di verificare il contenuto di quel messaggio, ti consigliamo di eseguire la trasmissione in diretta su una Pagina test. Per trasmettere in diretta, devi essere un amministratore o un editor della Pagina. Inoltre puoi impostare il parametro della privacy per creare streaming visibili solo a te.

Richiesta di trasmissioni in diretta pianificate

Per ottenere una lista di trasmissioni in diretta pianificate per un profilo utente, una Pagina, un gruppo o un evento, richiedi un token d'accesso appropriato con l'autorizzazione publish_video e invia una richiesta a:

GET /{node-id}/live_videos?broadcast_status=["SCHEDULED_UNPUBLISHED"]

Il valore broadcast_status deve essere un array. Consulta il riferimento LiveVideo per una lista completa dei valori aggiuntivi.

Esempio di una lista di trasmissioni pianificate per una Pagina

curl -i -X GET \ 
  "https://graph.facebook.com/{page-id}/live_videos?broadcast_status=["SCHEDULED_UNPUBLISHED"]&access_token={access-token}"
GraphRequest request = GraphRequest.newGraphPathRequest(
  accessToken,
  "/{page-id}/live_videos",
  new GraphRequest.Callback() {
    @Override
    public void onCompleted(GraphResponse response) {
      // Insert your code here
    }
});

Bundle parameters = new Bundle();
parameters.putString("broadcast_status", "["SCHEDULED_UNPUBLISHED"]");
request.setParameters(parameters);
request.executeAsync();
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"/{your-page-id}/live_videos"
           parameters:@{ @"broadcast_status": @"["SCHEDULED_UNPUBLISHED"]",}
           HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    // Insert your code here
}];
FB.api(
  '/{page-id}/live_videos',
  'GET',
  {"broadcast_status":"[\"SCHEDULED_UNPUBLISHED\"]"},
  function(response) {
      // Insert your code here
  }
);
try {
  // Returns a `FacebookFacebookResponse` object
  $response = $fb->get(
    '/{your-page-id}/live_videos',
    '{access-token}'
  );
} catch(FacebookExceptionsFacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(FacebookExceptionsFacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();

Esempio di risposta

{
  "data": [
    {
      "status": "SCHEDULED_UNPUBLISHED",
      "stream_url": "rtmp://rtmp-api-dev.facebook.com:80/rtmp/...",
      "secure_stream_url": "rtmps://rtmp-api-dev.facebook.com:443/rtmp/...",
      "embed_html": "<iframe src=\"https://www.facebook.com/plugins/video.php?...",
      "id": "10214937378883406 "  //LiveVideo object ID
    }
  ]
}

Ripianificazione di una trasmissione in diretta

Puoi modificare l'ora di inizio di una trasmissione in diretta pianificata inviando una richiesta a:

POST /{live-video-id}?planned_start_time={new-start-time}

Il valore {new-start-time} deve essere una marca temporale UNIX indicante la nuova ora di inizio. In caso di azione eseguita correttamente, l'API risponderà con l'ID dell'oggetto LiveVideo.

Esempio di video in diretta per una Pagina

curl -i -X POST \
  "https://graph.facebook.com/{live-video-id}?planned_start_time=1541540800&access_token={access-token}"
GraphRequest request = GraphRequest.newPostRequest(
  accessToken,
  "/{live-video-id}",   
  new JSONObject("{\"planned_start_time\":\"1541540800\"}"),
  new GraphRequest.Callback() {
    @Override
    public void onCompleted(GraphResponse response) {
      // Insert your code here
    }
});
request.executeAsync();
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"/{live-video-id}"    
           parameters:@{ @"planned_start_time": @"1541540800",}
           HTTPMethod:@"POST"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    // Insert your code here
}];
FB.api(
  '/{live-video-id}', 
  'POST',
  {"planned_start_time":"1541540800"},
  function(response) {
      // Insert your code here
  }
);
try {
  // Returns a `FacebookFacebookResponse` object
  $response = $fb->post(
    '/{live-video-id}', 
    array (
      'planned_start_time' => '1541540800'
    ),
    '{access-token}'
  );
} catch(FacebookExceptionsFacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(FacebookExceptionsFacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();

Esempio di risposta

{
  "id": "10214937378883406"
}

Avvio immediato di una trasmissione in diretta

Puoi avviare immediatamente una trasmissione in diretta inviando una richiesta a:

POST /{live-video-id}?status=LIVE_NOW

La trasmissione in diretta viene trasmessa se l'URL di streaming associato all'oggetto LiveVideo, che rappresenta la trasmissione in diretta, riceve i dati di streaming. In caso di azione eseguita correttamente, l'API risponderà con l'ID dell'oggetto LiveVideo.

Esempio di richiesta

curl -i -X POST \
 "https://graph.facebook.com/{live-video-id}?status=LIVE_NOW&access_token={access-token}"
GraphRequest request = GraphRequest.newPostRequest(
  accessToken,
  "/{live-video-id}",
  new JSONObject("{\"status\":\"LIVE_NOW\"}"),
  new GraphRequest.Callback() {
    @Override
    public void onCompleted(GraphResponse response) {
      // Insert your code here
    }
});
request.executeAsync();
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"/{live-video-id}"
           parameters:@{ @"status": @"LIVE_NOW",}
           HTTPMethod:@"POST"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    // Insert your code here
}];
FB.api(
  '/{live-video-id}',
  'POST',
  {"status":"LIVE_NOW"},
  function(response) {
      // Insert your code here
  }
);
try {
  // Returns a `FacebookFacebookResponse` object
  $response = $fb->post(
    '/{live-video-id}',
    array (
      'status' => 'LIVE_NOW'
    ),
    '{access-token}'
  );
} catch(FacebookExceptionsFacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(FacebookExceptionsFacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();

Esempio di risposta JSON

{
  "id": "10214937378883406"
}