Veröffentlichen

Mit der Video API kannst du Videos auf Seiten und in Gruppen veröffentlichen. Für Nutzer*innen kann nicht veröffentlicht werden.

Du kannst auch Reels auf Seiten veröffentlichen. Weitere Informationen findest du unter Reels Publishing API.

Für die Veröffentlichung von Videos muss du ein Upload-Protokoll wählen und eine POST-Anfrage an die /videos-Edge der Zielseite oder -gruppe senden. Die API unterstützt Protokolle für wiederaufnehmbare und nicht wiederaufnehmbare Uploads. Wir empfehlen die Verwendung des Protokolls für wiederaufnehmbare Uploads, da es vielseitiger ist und Verbindungsunterbrechungen besser bewältigen kann.

Beachte, dass zwar in allen Beispielen in diesem Dokument ein Seiten-Node verwendet wird, die Beispiele jedoch genauso auch auf Gruppen-Nodes übertragbar sind.

Anforderungen

Für alle Veröffentlichungen werden ein entsprechender Zugriffsschlüssel und Berechtigungen auf der Grundlage des Ziel-Nodes benötigt. Während der Testphase kannst du problemlos Schlüssel generieren und deiner App Berechtigungen erteilen. Verwende hierzu den Graph API Explorer. Weitere Informationen hierzu findest du in unserem Leitfaden Los geht‘s. Wenn deine App produktionsbereit ist, musst du wahrscheinlich Facebook Login implementieren, um Schlüssel und Berechtigungen von deinen App-Nutzer*innen abzurufen.

Veröffentlichen auf Seiten

Der*die App-Nutzer*in muss ein*e Administrator*in der Ziel-Gruppe sein. Du benötigst den Seiten-Zugriffsschlüssel des*der App-Nutzer*in. Außerdem muss diese*r deiner App die Berechtigungen pages_show_list, pages_read_engagement und pages_manage_posts erteilen.

Veröffentlichen in Gruppen

Der*die App-Nutzer*in muss ein*e Administrator*in der Ziel-Gruppe sein. Du benötigst den Nutzungs-Zugriffsschlüssel des*der App-Nutzer*in. Außerdem muss diese*r deiner App die Berechtigung publish_to_groups erteilen.

Wiederaufnehmbarer Upload

Das Protokoll für wiederaufnehmbare Uploads ist das bevorzugte Veröffentlichungsprotokoll, da du damit größere Videos in kleinere Chunks aufteilen kannst, um Zeitüberschreitungen zu vermeiden. Das ist vor allem bei großen Videos hilfreich, bei denen eher Verbindungsfehler auftreten. Sollte beim Hochladen eines großen Videos ein Verbindungsfehler auftreten, müsstest du normalerweise das gesamte Video neu hochladen. Wenn du jedoch das Protokoll für wiederaufnehmbare Uploads verwendest, musst du nur den betroffenen Chunk noch einmal hochladen. Bereits hochgeladene Chunks müssen nicht noch einmal hochgeladen werden.

Du kannst ein Video auf einer Seite oder in einer Gruppe veröffentlichen. Zum Veröffentlichen sind folgende Schritte erforderlich:

  1. Initialisieren einer Upload-Sitzung auf der Seite oder in der Gruppe
  2. Hochladen einzelner Chunks in der Reihenfolge, in der sie zusammengesetzt werden sollen
  3. Beenden der Upload-Sitzung

Nachdem du die Upload-Sitzung beendet hast, setzen wir das Video wieder zusammen und kodieren und veröffentlichen es.

Einschränkungen

Videos sind auf 10 GB und 4 Stunden beschränkt.

Schritt 1: Upload-Sitzung initialisieren

Sende zum Initialisieren einer Upload-Sitzung eine POST-Anfrage an den Seiten-Videos-Endpunkt:

POST /v19.0/{page-id}/videos
  ?upload_phase=start
  &access_token={access-token}
  &file_size={file-size}

Schließe die folgenden Parameter ein:

ParameternameWert

upload_phase

start

access_token

Dein Seiten-Zugriffsschlüssel, wenn du auf einer Seite veröffentlichst, bzw. dein Nutzungs-Zugriffsschlüssel, wenn du in einer Gruppe veröffentlichst.

file_size

Die Gesamtgröße deiner Videodatei in Bytes.

Beispielanfrage

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "upload_phase=start" \
  -F "access_token=EAADI..." \
  -F "file_size=22420886"

Beispielantwort

{
  "video_id":"2918040888250909",          //Capture this value (optional)
  "start_offset":"0",                     //Capture this value
  "end_offset":"1048576",
  "upload_session_id":"2918040901584241"  //Capture this value
}

Notiere die von der API zurückgegebenen Werte für start_offset und upload_session_id. Diese verwendest du im nächsten Schritt zum Hochladen deines ersten Video-Chunks. Es empfiehlt sich möglicherweise auch, den Wert für video_id zu notieren. Er wird nicht für die Veröffentlichung benötigt, ist jedoch die ID des letztendlich veröffentlichten Videos.

Schritt 2: Chunks einzeln hochladen

Lade alle Chunks deines Videos in der Reihenfolge hoch, in der sie zusammengesetzt werden sollen. Sende dazu aufeinanderfolgende POST-Anfragen an den Seiten-Videos-Endpunkt:

POST /v19.0/{page-id}/videos
  ?upload_phase=transfer
  &access_token={access-token}
  &upload_session_id={upload-session-id}
  &start_offset={start-offset}
  &video_file_chunk={video-file-chunk}

Schließe die folgenden Daten als multipart/form-data in den Anfragetext ein.

FormulardatennameWert

upload_phase

transfer

access_token

Dein Seiten-Zugriffsschlüssel, wenn du auf einer Seite veröffentlichst, bzw. dein Nutzungs-Zugriffsschlüssel, wenn du in einer Gruppe veröffentlichst.

upload_session_id

Die ID deiner Upload-Sitzung.

start_offset

Der in der vorherigen Antwort zurückgegebene Wert für start_offset.

video_file_chunk

Der Name des hochzuladenden Video-Chunks.

Jedes Mal, wenn du einen Chunk erfolgreich hochgeladen hast, wird ein neuer start_offset-Wert zurückgegeben. Wiederhole diese Anfrage mit dem neu zurückgegebenen start_offset-Wert und dem Namen des nächsten hochzuladenden Video-Chunks (zu video_file_chunk zugewiesen) und arbeite dich dann schrittweise durch die verbleibenden Video-Chunks.

Beispielanfrage für den ersten Chunk

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos"  \
  -F "upload_phase=transfer" \
  -F "upload_session_id=2918040901584241" \
  -F "access_token=EAADI..." \
  -F "start_offset=0" \
  -F "video_file_chunk=@/Users/...xaa"

Beispielantwort

{
  "start_offset":"10485760",  //Value for second chunk
  "end_offset":"15728640"
}

Beispielanfrage für den zweiten Chunk

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos"  \
  -F "upload_phase=transfer" \
  -F "upload_session_id=2918040901584241" \
  -F "access_token=EAADI..." \
  -F "start_offset=10485760" \
  -F "video_file_chunk=@/Users/...xab"

Beispielantwort

{
  "start_offset":"20971520",  //Value for third chunk
  "end_offset":"22420886"
}

Nachdem du den letzten Chunk hochgeladen hast, sollte die API mit übereinstimmenden start_offset- und end_offset-Werten antworten. Damit wird angegeben, dass du die Upload-Sitzung beenden kannst.

Beispiel für die letzte Antwort

{
  "start_offset":"22420886",  //When values match you can
  "end_offset":"22420886"     //end the upload session
}

Schritt 3: Upload-Sitzung beenden

Wenn du die Upload-Sitzung beendest, fügen wir das vollständige Video zusammen, kodieren es und veröffentlichen es dann auf der Seite. Sende zum Beenden der Upload-Sitzung eine letzte POST-Anfrage an den Seiten-Videos-Endpunkt:

POST /v19.0/{page-id}/videos
  ?upload_phase=finish
  &access_token={access-token}
  &upload_session_id={upload-session-id}

Schließe die folgenden Parameter ein:

ParameternameWert

upload_phase

finish

access_token

Dein Seiten-Zugriffsschlüssel, wenn du auf einer Seite veröffentlichst, bzw. dein Nutzungs-Zugriffsschlüssel, wenn du in einer Gruppe veröffentlichst.

upload_session_id

Die ID deiner Upload-Sitzung.

Du kannst auch alle zusätzlichen Parameter einschließen, die vom Seiten-Videos-Endpunkt unterstützt werden, wie zum Beispiel title, description und thumb.

Beispielanfrage

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos"  \
  -F "upload_phase=finish" \
  -F "access_token=EAADI..." \
  -F "upload_session_id=2918040901584241"

Beispiel einer JSON-Antwort

{
  "success":true
}

Wenn du diese Antwort erhältst, deutet dies darauf hin, dass wir damit begonnen haben, das vollständige Video zusammenzufügen und zu kodieren. Das veröffentlichte Video sollte innerhalb weniger Minuten angezeigt werden.

Nicht wiederaufnehmbarer Upload

Wir empfehlen dir, Dateien mit dem Protokoll für wiederaufnehmbare Uploads hochzuladen, da es Verbindungsunterbrechungen effizienter handhabt und größere Dateien unterstützt. Wenn du jedoch Dateien lieber mit dem Protokoll für nicht wiederaufnehmbare Uploads hochladen möchtest, kannst du eine POST-Anfrage an die Seiten-Videos-Edge senden und den Parameter source (für lokale Videodateien) oder den Parameter file_url (für auf einem öffentlichen Server gehostete Dateien) als multipart/form-data in deinen Anforderungstext aufnehmen. Du kannst auch alle zusätzlichen Parameter einschließen, die vom Seiten-Videos-Endpunkt unterstützt werden, wie zum Beispiel title, description und thumb.

Einschränkungen

Videos sind auf 1 GB und 20 Minuten begrenzt. Ist deine Videodatei größer, teile sie in Chunks auf und veröffentliche sie stattdessen mit dem Protokoll für wiederaufnehmbare Uploads.

Beispielanfrage für lokale Datei

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "access_token=EAADd..." \
  -F "source=@/Users/...incredible.mov"

Beispielanfrage für gehostete Datei

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "access_token=EAADd..." \
  -F "file_url=https://socialsizz.../incredible.mov"

War der Vorgang erfolgreich, antwortet die API mit der ID des veröffentlichten Videos.

Beispielantwort

{
  "id":"287788272232962"  //ID of the published Video
}

Video-Miniaturbilder

Wir generieren automatisch Miniaturbilder anhand von Standbildern aus veröffentlichten Videos. Generierte Miniaturbilder können optimiert werden, um Helligkeit, Farbe und Kontrast zu verbessern. Du kannst dein eigenes Miniaturbild bereitstellen, indem du das Feld thumb in das Protokoll für wiederaufnehmbare oder nicht wiederaufnehmbare Uploads einschließt. Wenn du das Protokoll für wiederaufnehmbare Uploads verwendest, schließe das Feld thumb in Schritt 3: Upload-Sitzung beenden ein. Von dir bereitgestellte Miniaturbilder werden nicht verändert.

Anforderungen für Miniaturbilder

Format: BMP, GIF, JPEG, PNG, TIFF
Dateigröße: 10 MB oder weniger.

Es gibt keine Anforderungen an die Bildabmessungen, aber das Bild sollte dasselbe Seitenverhältnis wie das Video aufweisen.

Beispielanfrage für wiederaufnehmbaren Upload mit Miniaturbild

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "upload_phase=finish" \
  -F "access_token=EAADI..." \
  -F "upload_session_id=2918040901584241"
  -F "thumb=@/Users/...thumbnail_image.png"

Beispiel einer JSON-Antwort

{
  "success":true
}

Beispielanfrage für nicht wiederaufnehmbaren Upload mit Miniaturbild

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "access_token=EAADd..." \
  -F "source=@/Users/...incredible.mov"
  -F "thumb=@/Users/...thumbnail_image.png"

Beispielantwort

{
  "id":"287788272232962"
}