การเผยแพร่

API วิดีโอช่วยให้คุณสามารถเผยแพร่วิดีโอบนเพจและในกลุ่มได้ แต่ยังไม่รองรับการเผยแพร่บนผู้ใช้

คุณสามารถเผยแพร่คลิป Reels บนเพจได้ด้วย โปรดดูข้อมูลเพิ่มเติมที่ API การเผยแพร่คลิป Reels

ขั้นตอนการเผยแพร่วิดีโอจะเกี่ยวข้องกับการเลือกโปรโตคอลการอัพโหลดและการส่งคำขอ POST ไปยังจุดเชื่อมโยง /videos ของเพจหรือกลุ่มเป้าหมาย API รองรับโปรโตคอลการอัพโหลดทั้งแบบดำเนินการต่อได้ และดำเนินการต่อไม่ได้ เราขอแนะนำให้ใช้โปรโตคอลการอัพโหลดแบบดำเนินการต่อได้ เนื่องจากมีความอเนกประสงค์มากกว่าและสามารถจัดการกับการหยุดชะงักของการเชื่อมต่อได้อย่างราบรื่น

โปรดทราบว่าตัวอย่างทั้งหมดในเอกสารนี้ใช้โหนดเพจ แต่ก็สามารถใช้กับโหนดกลุ่มได้เช่นกัน

ข้อกำหนด

การดำเนินการเผยแพร่ทุกครั้งต้องใช้โทเค็นการเข้าถึงและสิทธิ์การอนุญาตที่เหมาะสมโดยขึ้นอยู่กับโหนดที่คุณกำลังกำหนดเป้าหมาย ในขณะที่กำลังทดสอบ คุณสามารถสร้างโทเค็นและให้สิทธิ์การอนุญาตแก่แอพของคุณได้ง่ายๆ โดยใช้ Graph API Explorer โปรดดูวิธีการได้ที่คู่มือการเริ่มต้นใช้งานของเรา เมื่อแอพของคุณพร้อมสำหรับการใช้งานจริงแล้ว คุณอาจต้องใช้การเข้าสู่ระบบด้วย Facebook เพื่อขอรับโทเค็นและสิทธิ์การอนุญาตจากผู้ใช้แอพของคุณ

การเผยแพร่บนเพจ

ผู้ใช้แอพต้องเป็นผู้ดูแลของเพจที่คุณกำลังกำหนดเป้าหมาย คุณต้องมีโทเค็นการเข้าถึงเพจของผู้ใช้แอพ และผู้ใช้แอพจะต้องให้สิทธิ์ pages_show_list, pages_read_engagement และ pages_manage_posts แก่แอพของคุณ

การเผยแพร่ในกลุ่ม

ผู้ใช้แอพต้องเป็นผู้ดูแลของกลุ่มที่คุณกำลังกำหนดเป้าหมาย คุณต้องมีโทเค็นการเข้าถึงผู้ใช้ของผู้ใช้แอพ และผู้ใช้แอพจะต้องให้สิทธิ์ publish_to_groups แก่แอพของคุณ

การอัพโหลดแบบดำเนินการต่อได้

โปรโตคอลการอัพโหลดแบบดำเนินการต่อได้เป็นโปรโตคอลการเผยแพร่ที่นิยมใช้ เนื่องจากคุณสามารถแบ่งวิดีโอขนาดใหญ่ออกเป็นส่วนเล็กๆ เพื่อหลีกเลี่ยงการหมดเวลาได้ ซึ่งจะมีประโยชน์อย่างยิ่งสำหรับวิดีโอขนาดใหญ่ที่คุณมักจะพบกับข้อผิดพลาดในการเชื่อมต่อ หากคุณพบกับข้อผิดพลาดในการเชื่อมต่อขณะอัพโหลดวิดีโอขนาดใหญ่ โดยปกติแล้วคุณจะต้องอัพโหลดวิดีโอทั้งหมดอีกครั้ง แต่ถ้าใช้โปรโตคอลการอัพโหลดแบบดำเนินการต่อได้ คุณเพียงแค่ต้องอัพโหลดส่วนที่ได้รับผลกระทบอีกครั้งเท่านั้น โดยไม่จำเป็นต้องอัพโหลดส่วนที่อัพโหลดไปแล้วซ้ำอีก

คุณสามารถเผยแพร่วิดีโอได้บนเพจหรือในกลุ่ม การเผยแพร่มีขั้นตอนดังต่อไปนี้

  1. เริ่มเซสชั่นการอัพโหลดบนเพจหรือในกลุ่ม
  2. อัพโหลดแต่ละส่วนตามลำดับที่ควรประกอบเข้าด้วยกัน และ
  3. สิ้นสุดเซสชั่นการอัพโหลด

เมื่อสิ้นสุดเซสชั่นการอัพโหลดแล้ว เราจะประกอบวิดีโอเข้าด้วยกันอีกครั้ง ทำการเข้ารหัส และเผยแพร่

ข้อจำกัด

วิดีโอจะจำกัดขนาดไว้ไม่เกิน 10 GB และมีความยาวไม่เกิน 4 ชั่วโมง

ขั้นตอนที่ 1: เริ่มเซสชั่นการอัพโหลด

หากต้องการเริ่มเซสชั่นการอัพโหลดวิดีโอ ให้ส่งคำขอ POST ไปยังตำแหน่งข้อมูลวิดีโอบนเพจ:

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

ประกอบด้วยพารามิเตอร์ต่อไปนี้

ชื่อพารามิเตอร์ค่า

upload_phase

start

access_token

โทเค็นการเข้าถึงเพจของคุณหากเผยแพร่บนเพจ หรือโทเค็นการเข้าถึงผู้ใช้ของคุณหากเผยแพร่ในกลุ่ม

file_size

ขนาดโดยรวมของไฟล์วิดีโอโดยหน่วยเป็นไบต์

ตัวอย่างคำขอ

curl -X POST \
  "https://graph-video.facebook.com/v20.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
}

จดค่า start_offset และ upload_session_id ที่ API ส่งกลับมา ซึ่งคุณจะใช้ในขั้นตอนถัดไปเพื่ออัพโหลดวิดีโอส่วนแรก คุณอาจจะจดค่า video_id ไว้ด้วยก็ได้ คุณไม่จำเป็นต้องใช้ค่านี้สำหรับการเผยแพร่ แต่ค่านี้จะเป็น ID ของวิดีโอที่เผยแพร่ในท้ายที่สุด

ขั้นตอนที่ 2: อัพโหลดทีละส่วน

อัพโหลดวิดีโอของคุณทีละส่วนตามลำดับที่ควรประกอบเข้าด้วยกันโดยส่งคำขอ POST อย่างต่อเนื่องไปยังตำแหน่งข้อมูลวิดีโอบนเพจ

POST /v20.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 ไว้ในเนื้อหาของคำขอด้วย

ชื่อ "ข้อมูลจาก"ค่า

upload_phase

transfer

access_token

โทเค็นการเข้าถึงเพจของคุณหากเผยแพร่บนเพจ หรือโทเค็นการเข้าถึงผู้ใช้ของคุณหากเผยแพร่ในกลุ่ม

upload_session_id

ID เซสชั่นการอัพโหลดของคุณ

start_offset

ค่า start_offset ที่ส่งกลับมาในการตอบกลับก่อนหน้า

video_file_chunk

ชื่อของส่วนวิดีโอที่จะอัพโหลด

ทุกครั้งที่คุณอัพโหลดแต่ละส่วนสำเร็จ ระบบจะส่งคืนค่า start_offset ใหม่กลับมา ส่งคำขอนี้ซ้ำโดยใช้ค่า start_offset ที่เพิ่งส่งคืนมาและชื่อของวิดีโอส่วนถัดไปที่จะอัพโหลด (กำหนดให้กับ video_file_chunk) แล้วค่อยดำเนินวิธีเดียวกันนี้กับวิดีโอทั้งหมดที่เหลือ

ตัวอย่างคำขอสำหรับส่วนแรก

curl -X POST \
  "https://graph-video.facebook.com/v20.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/v20.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"
}

เมื่ออัพโหลดส่วนสุดท้ายแล้ว API ควรตอบกลับด้วยค่า start_offset และ end_offset ที่ตรงกัน ซึ่งบ่งบอกว่าสามารถสิ้นสุดเซสชั่นการอัพโหลดได้แล้ว

ตัวอย่างการตอบกลับครั้งสุดท้าย

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

ขั้นตอนที่ 3: สิ้นสุดเซสชั่นการอัพโหลด

เมื่อสิ้นสุดเซสชั่นการอัพโหลดแล้ว เราจะประกอบวิดีโอเข้าด้วยกันอีกครั้งให้สมบูรณ์ ทำการเข้ารหัส และเผยแพร่บนเพจ หากต้องการสิ้นสุดเซสชั่นการอัพโหลดวิดีโอ ให้ส่งคำขอ POST ครั้งสุดท้ายไปยังตำแหน่งข้อมูลวิดีโอบนเพจ:

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

ประกอบด้วยพารามิเตอร์ต่อไปนี้

ชื่อพารามิเตอร์ค่า

upload_phase

finish

access_token

โทเค็นการเข้าถึงเพจของคุณหากเผยแพร่บนเพจ หรือโทเค็นการเข้าถึงผู้ใช้ของคุณหากเผยแพร่ในกลุ่ม

upload_session_id

ID เซสชั่นการอัพโหลดของคุณ

คุณยังสามารถใส่พารามิเตอร์เพิ่มเติมที่ตำแหน่งข้อมูลวิดีโอบนเพจรองรับได้ด้วย เช่น title, description และ thumb

ตัวอย่างคำขอ

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

ตัวอย่างการตอบกลับแบบ JSON

{
  "success":true
}

เมื่อคุณได้รับการตอบกลับนี้ แสดงว่าเราเริ่มประกอบวิดีโอเข้าด้วยกันและเข้ารหัสวิดีโอที่เสร็จสมบูรณ์แล้ว คุณน่าจะเห็นวิดีโอที่เผยแพร่แล้วภายในไม่กี่นาที

การอัพโหลดแบบดำเนินการต่อไม่ได้

เราขอแนะนำให้คุณอัพโหลดไฟล์โดยใช้โปรโตคอลการอัพโหลดแบบดำเนินการต่อได้ เนื่องจากโปรโตคอลนี้จะจัดการกับการหยุดชะงักในการเชื่อมต่อได้อย่างมีประสิทธิภาพมากกว่าและรองรับไฟล์ขนาดใหญ่กว่า อย่างไรก็ตาม หากคุณต้องการอัพโหลดไฟล์โดยใช้โปรโตคอลการอัพโหลดที่ดำเนินการต่อไม่ได้ คุณสามารถทำได้โดยส่งคำขอ POST ไปยังจุดเชื่อมโยงวิดีโอบนเพจ และใส่พารามิเตอร์ source (สำหรับไฟล์วิดีโอในเครื่อง) หรือพารามิเตอร์ file_url (สำหรับไฟล์ที่โฮสต์บนเซิร์ฟเวอร์สาธารณะ) ในเนื้อหาคำขอของคุณโดยเป็น multipart/form-data คุณยังสามารถใส่พารามิเตอร์เพิ่มเติมที่ตำแหน่งข้อมูลวิดีโอบนเพจรองรับได้ด้วย เช่น title, description และ thumb

ข้อจำกัด

วิดีโอจะจำกัดขนาดไว้ไม่เกิน 1 GB และมีความยาวไม่เกิน 20 นาที หากไฟล์วิดีโอของคุณมีขนาดใหญ่กว่านั้น ให้แบ่งออกเป็นส่วนๆ และเผยแพร่โดยใช้โปรโตคอลการอัพโหลดแบบดำเนินการต่อได้แทน

ตัวอย่างคำขอไฟล์ในเครื่อง

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

ตัวอย่างคำขอไฟล์ที่โฮสต์ไว้

curl -X POST \
  "https://graph-video.facebook.com/v20.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
ขนาดไฟล์: ไม่เกิน 10 MB

ไม่มีข้อกำหนดสำหรับขนาดรูปภาพ แต่ควรมีอัตราส่วนกว้างยาวเดียวกับวิดีโอของคุณ

ตัวอย่างคำขอการอัพโหลดแบบดำเนินการต่อได้โดยมีภาพขนาดย่อ

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

ตัวอย่างการตอบกลับแบบ JSON

{
  "success":true
}

ตัวอย่างคำขอการอัพโหลดแบบดำเนินการต่อไม่ได้โดยมีภาพขนาดย่อ

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

ตัวอย่างการตอบกลับ

{
  "id":"287788272232962"
}