動画APIを使用すると動画をページとグループで公開できます。ユーザーでの公開はサポートされていません。
ページでリールを公開することもできます。詳細については、リール公開APIをご覧ください。
動画を公開する処理には、アップロードプロトコルを選択し、POST
リクエストをターゲットページまたはグループの/videos
エッジに送信することが含まれます。このAPIは、再開可能アップロードプロトコルと再開不可アップロードプロトコルの両方をサポートしています。再開可能アップロードプロトコルを使用することをおすすめします。こちらの方が汎用的であり、接続の中断をスムーズに処理できるからです。
このドキュメントに記載されているすべての例ではページノードを使用していますが、グループノードにも同じように当てはまります。
すべての公開アクションでは、ターゲットのノードに応じて適切なアクセストークンとアクセス許可が必要です。テスト中は、グラフAPIエクスプローラを使用して、簡単にトークンを生成しアプリにアクセス許可を付与できます。このやり方については、スタートガイドを参照してください。本番用のアプリの準備ができたら、たいていはFacebookログインを実装してトークンとアクセス許可をアプリユーザーから取得する必要が生じます。
アプリユーザーは、ターゲットにするページの管理者でなければなりません。アプリユーザーのページアクセストークンが必要であり、アプリユーザーからアプリにpages_show_list
、pages_read_engagement
、pages_manage_posts
アクセス許可が付与されなければなりません。
アプリユーザーは、ターゲットにするグループの管理者でなければなりません。アプリユーザーのユーザーアクセストークンが必要であり、アプリユーザーからアプリにpublish_to_groups
アクセス許可が付与されなければなりません。
再開可能アップロードプロトコルを公開プロトコルとして使用することをおすすめします。このプロトコルを使用するとサイズの大きな動画を小さなチャンクに分割してタイムアウトを避けることができるからです。これは特に、接続エラーが発生しやすい環境でサイズの大きな動画を扱う際に便利です。サイズの大きな動画のアップロード中に接続エラーが発生した場合、通常は、動画全体を再アップロードする必要があります。しかし再開可能アップロードプロトコルを使用した場合、必要なのは影響があったチャンクを再アップロードすることだけで、すでにアップロードされたチャンクを再アップロードする必要はありません。
ページまたはグループで動画を公開できます。動画を公開するには、以下の手順に従います。
アップロードセッションが終了したら、動画は再度組み立てられ、エンコードされ、公開されます。
動画は10GBと4時間に制限されています。
動画アップロードセッションを初期化するには、POST
リクエストをページ動画エンドポイントに送信します。
POST /v19.0
/{page-id}/videos
?upload_phase=start
&access_token={access-token}
&file_size={file-size}
次のパラメーターを指定します。
パラメーター名 | 値 |
---|---|
|
|
| ページで公開する場合はページアクセストークン、グループで公開する場合はユーザーアクセストークン。 |
| 動画ファイルの合計サイズ(バイト単位)。 |
curl -X POST \
"https://graph-video.facebook.com/v19.0
/1755847768034402/videos" \
-F "upload_phase=start" \
-F "access_token=EAADI..." \
-F "file_size=22420886"
{ "video_id":"2918040888250909", //Capture this value (optional) "start_offset":"0", //Capture this value "end_offset":"1048576", "upload_session_id":"2918040901584241" //Capture this value }
APIが返すstart_offset
値とupload_session_id
値をキャプチャします。これらの値を次のステップで使用して、最初の動画チャンクをアップロードします。video_id
値もキャプチャしたいと思われるかもしれません。この値は公開には必要ありませんが、最終的に公開された動画のIDになります。
連続してPOST
リクエストをページ動画エンドポイントに送信することにより、組み立てられる順番で個々のチャンクをアップロードします。
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}
次のデータをリクエスト本文にmultipart/form-data
として含めます。
フォームデータ名 | 値 |
---|---|
|
|
| ページで公開する場合はページアクセストークン、グループで公開する場合はユーザーアクセストークン。 |
| アップロードセッションID。 |
| 前回の応答で返された |
| アップロードする動画チャンクの名前。 |
チャンクのアップロードに成功する度に、新しいstart_offset
値が返されます。新しく返されたstart_offset
値とアップロードする次の動画チャンクの名前(video_file_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"
{ "start_offset":"10485760", //Value for second chunk "end_offset":"15728640" }
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"
{ "start_offset":"20971520", //Value for third chunk "end_offset":"22420886" }
最後のチャンクをアップロードしたら、start_offset
値とend_offset
値が同じ値になってAPI応答が返されます。これは、アップロードセッションを終了できることを示します。
{ "start_offset":"22420886", //When values match you can "end_offset":"22420886" //end the upload session }
アップロードセッションが終了したら、動画全体は再度組み立てられ、エンコードされ、ページで公開されます。アップロードセッションを終了するには、次の1つの最終POST
リクエストをページ動画エンドポイントに送信します。
POST /v19.0
/{page-id}/videos
?upload_phase=finish
&access_token={access-token}
&upload_session_id={upload-session-id}
次のパラメーターを指定します。
パラメーター名 | 値 |
---|---|
|
|
| ページで公開する場合はページアクセストークン、グループで公開する場合はユーザーアクセストークン。 |
| アップロードセッションID。 |
ページ動画エンドポイントがサポートする任意のその他のパラメーター(title
、description
、thumb
など)を含めることもできます。
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"
{ "success":true }
この応答を受け取ったら、動画全体の組み立てとエンコードが開始されているということです。1分以内に公開された動画を見ることができるはずです。
ファイルのアップロードには再開可能アップロードプロトコルを使用することをおすすめします。それは、このプロトコルが接続の中断をより効率的に処理し、より大きなサイズのファイルをサポートしているからです。しかし、再開不可アップロードプロトコルを使用したい場合は、POST
リクエストをページ動画エッジに送り、source
パラメーター(ローカル動画ファイルの場合)またはfile_url
パラメーター(公開サーバーでホストされているファイルの場合)をリクエスト本文にmultipart/form-data
として含めます。ページ動画エンドポイントがサポートする任意のその他のパラメーター(title
、description
、thumb
など)を含めることもできます。
動画は、最大1GB、最長20分に制限されています。動画ファイルがこれよりも大きい場合、代わりに動画ファイルを複数のチャンクに分割し、再開可能アップロードプロトコルを使用して公開してください。
curl -X POST \
"https://graph-video.facebook.com/v19.0
/1755847768034402/videos" \
-F "access_token=EAADd..." \
-F "source=@/Users/...incredible.mov"
curl -X POST \
"https://graph-video.facebook.com/v19.0
/1755847768034402/videos" \
-F "access_token=EAADd..." \
-F "file_url=https://socialsizz.../incredible.mov"
リクエストが正常に処理されると、APIは公開された動画のIDを応答で返します。
{ "id":"287788272232962" //ID of the published Video }
公開された動画の静止画像から自動的にサムネイル画像が生成されます。生成されたサムネイルを拡張して、明るさ、色、コントラストを向上させることもできます。再開可能プロトコルでも再開不可プロトコルでも、thumb
フィールドを含めれば独自のサムネイル画像を指定できます。再開可能プロトコルを使用している場合、thumb
フィールドは、ステップ3: アップロードセッションを終了するで含めてください。自分で指定したサムネイル画像は変更されません。
フォーマット:BMP、GIF、JPEG、PNG、TIFF
ファイルサイズ:10MB以下。
画像のディメンション要件はありません。しかし、動画と同じアスペクト比にしてください。
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"
{ "success":true }
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"
{ "id":"287788272232962" }