Đăng

Với API Video, bạn có thể đăng Video trên TrangNhóm. Không hỗ trợ đăng trên nút Người dùng.

Bạn cũng có thể đăng Thước phim trên Trang. Để biết thêm thông tin, hãy xem phần API Đăng thước phim.

Quy trình đăng Video bao gồm chọn giao thức tải lên và gửi yêu cầu POST đến cạnh /videos của Nhóm hoặc Trang được nhắm mục tiêu. API này hỗ trợ cả giao thức Tải lên nối tiếpTải lên không nối tiếp. Bạn nên sử dụng giao thức Tải lên nối tiếp vì giao thức này linh hoạt hơn và có thể xử lý nhanh nhạy tình trạng gián đoạn kết nối.

Lưu ý rằng mọi ví dụ trong tài liệu này đều dùng nút Trang. Tuy nhiên, nút Nhóm cũng áp dụng tương tự.

Yêu cầu

Đối với mọi hành động đăng, bạn cần có Mã truy cậpQuyền thích hợp tùy theo nút mà bạn đang nhắm mục tiêu. Trong khi thử nghiệm, bạn có thể dễ dàng tạo Mã truy cập và cấp Quyền cho ứng dụng của mình thông qua Trình khám phá API Đồ thị. Hãy tham khảo hướng dẫn Bắt đầu của chúng tôi để xem cách thực hiện việc này. Khi ứng dụng của bạn sẵn sàng phát hành chính thức, có khả năng bạn sẽ phải triển khai phương thức Đăng nhập bằng Facebook để lấy Mã truy cập và Quyền từ người dùng ứng dụng.

Đăng trên Trang

Người dùng ứng dụng phải là Quản trị viên của Trang mà bạn đang nhắm mục tiêu. Bạn cần có Mã truy cập Trang của người dùng ứng dụng, đồng thời họ phải cấp cho ứng dụng của bạn các quyền pages_show_list, pages_read_engagementpages_manage_posts.

Đăng trên Nhóm

Người dùng ứng dụng phải là Quản trị viên của Nhóm mà bạn đang nhắm mục tiêu. Bạn cần có Mã truy cập người dùng của người dùng ứng dụng, đồng thời họ phải cấp cho ứng dụng của bạn quyền publish_to_groups.

Tải lên nối tiếp

Giao thức Tải lên nối tiếp là giao thức tải lên ưu tiên vì bạn có thể tách các video lớn thành những file cắt nhỏ hơn để tránh hết thời gian chờ. Điều này đặc biệt hữu ích đối với những video lớn mà nhiều khả năng bạn sẽ gặp lỗi kết nối. Nếu gặp lỗi kết nối khi tải video lớn lên, thông thường bạn sẽ phải tải lại toàn bộ video lên. Tuy nhiên, với giao thức Tải lên nối tiếp, bạn chỉ phải tải lên lại các file cắt bị ảnh hưởng; những file cắt đã tải lên thành công sẽ không cần phải tải lên lại.

Bạn có thể đăng video trên Trang hoặc Nhóm. Quy trình đăng bao gồm các bước sau:

  1. Khởi tạo phiên tải lên trên Trang hoặc Nhóm,
  2. tải từng file cắt lên theo thứ tự sắp xếp và
  3. kết thúc phiên tải lên.

Sau khi bạn kết thúc phiên tải lên, chúng tôi sẽ sắp xếp lại video, mã hóa rồi đăng video đó lên.

Các giới hạn

Video không được vượt quá 10GB và 4 giờ.

Bước 1: Khởi tạo phiên tải lên

Để khởi tạo phiên tải video lên, hãy gửi yêu cầu POST đến điểm cuối Video trên Trang:

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

Thêm các thông số sau:

Tên thông sốGiá trị

upload_phase

start

access_token

Mã truy cập Trang nếu bạn đăng trên Trang hoặc mã truy cập Người dùng nếu bạn đăng trên Nhóm.

file_size

Tổng kích thước của file video tính theo byte.

Yêu cầu mẫu

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

Phản hồi mẫu

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

Ghi lại các giá trị start_offsetupload_session_id do API trả về. Bạn sẽ dùng các giá trị này ở bước tiếp theo để tải file cắt đầu tiên của video lên. Bạn cũng nên ghi lại giá trị video_id. Bạn không cần giá trị này khi đăng, nhưng đây sẽ là ID cuối cùng của video được đăng.

Bước 2: Tải từng file cắt lên

Tải từng file cắt của video lên theo thứ tự sắp xếp bằng cách gửi các yêu cầu POST liên tiếp đến điểm cuối Video trên Trang:

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}

Thêm dữ liệu sau đây dưới dạng multipart/form-data vào phần nội dung yêu cầu:

Tên dữ liệu mẫuGiá trị

upload_phase

transfer

access_token

Mã truy cập Trang nếu bạn đăng trên Trang hoặc mã truy cập Người dùng nếu bạn đăng trên Nhóm.

upload_session_id

ID phiên tải lên của bạn.

start_offset

Giá trị start_offset được trả về trong nội dung phản hồi trước đó.

video_file_chunk

Tên file cắt của video sẽ tải lên.

Mỗi lần bạn tải file cắt lên thành công, giá trị start_offset mới sẽ được trả về. Hãy lặp lại yêu cầu này bằng cách sử dụng giá trị start_offset mới trả về và tên file cắt tiếp theo của video sẽ tải lên (được chỉ định cho video_file_chunk), sau đó lần lượt thực hiện bước này cho tất cả file cắt còn lại của video.

Yêu cầu mẫu cho file cắt đầu tiên

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"

Phản hồi mẫu

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

Yêu cầu mẫu cho file cắt thứ hai

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"

Phản hồi mẫu

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

Sau khi bạn tải file cắt cuối cùng lên, API này sẽ phản hồi kèm theo các giá trị start_offsetend_offset phù hợp, cho biết rằng bạn có thể kết thúc phiên tải lên.

Ví dụ về phản hồi cuối cùng

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

Bước 3: Kết thúc phiên tải lên

Khi bạn kết thúc phiên tải lên, chúng tôi sẽ sắp xếp lại video hoàn chỉnh, mã hóa rồi đăng video đó trên Trang. Để kết thúc phiên tải lên, hãy gửi một yêu cầu POST cuối cùng đến điểm cuối Video trên Trang:

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

Thêm các thông số sau:

Tên thông sốGiá trị

upload_phase

finish

access_token

Mã truy cập Trang nếu bạn đăng trên Trang hoặc mã truy cập Người dùng nếu bạn đăng trên Nhóm.

upload_session_id

ID phiên tải lên của bạn.

Bạn cũng có thể thêm bất kỳ thông số bổ sung nào mà điểm cuối Video trên Trang hỗ trợ, chẳng hạn như title, descriptionthumb.

Yêu cầu mẫu

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"

Ví dụ về phản hồi ở định dạng JSON

{
  "success":true
}

Khi bạn nhận được phản hồi này, tức là chúng tôi đã bắt đầu sắp xếp và mã hóa video hoàn chỉnh. Trong vòng vài phút là bạn có thể nhìn thấy video đã đăng.

Tải lên không nối tiếp

Bạn nên tải file lên bằng giao thức Tải lên nối tiếp vì giao thức này xử lý tình trạng gián đoạn kết nối một cách hiệu quả hơn và hỗ trợ các file lớn hơn. Tuy nhiên, nếu thích tải file lên bằng giao thức Tải lên không nối tiếp, bạn có thể làm vậy bằng cách gửi yêu cầu POST đến cạnh Video trên Trang và thêm thông số source (đối với file video trên máy) hoặc thông số file_url (đối với file lưu trữ trên máy chủ công khai) vào phần nội dung yêu cầu dưới dạng multipart/form-data. Bạn cũng có thể thêm bất kỳ thông số bổ sung nào mà điểm cuối Video trên Trang hỗ trợ, chẳng hạn như title, descriptionthumb.

Các giới hạn

Video không được vượt quá 1GB và 20 phút. Nếu file video lớn hơn, hãy tách thành các file cắt và đăng bằng giao thức Tải lên nối tiếp.

Ví dụ về yêu cầu cho file trên máy

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

Ví dụ về yêu cầu cho file được lưu trữ

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

Khi thành công, API này sẽ phản hồi kèm theo ID của Video đã đăng.

Phản hồi mẫu

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

Hình thu nhỏ của video

Chúng tôi sẽ tự động tạo hình thu nhỏ bằng các ảnh cắt từ video đã đăng. Các hình thu nhỏ đã tạo có thể được chỉnh sửa để cải thiện độ sáng, màu sắc và độ tương phản. Bạn có thể cung cấp hình thu nhỏ của chính mình bằng cách thêm trường thumb thông qua giao thức Tải lên nối tiếp hoặc Tải lên không nối tiếp. Nếu sử dụng giao thức Tải lên nối tiếp, hãy thêm trường thumb trong Bước 3: Kết thúc phiên tải lên. Bạn sẽ không thay đổi được hình thu nhỏ mà mình cung cấp.

Yêu cầu về hình thu nhỏ

Định dạng: BMP, GIF, JPEG, PNG,TIFF
Kích thước file: 10MB trở xuống.

Không có yêu cầu về kích thước hình ảnh nhưng hình ảnh nên có cùng tỷ lệ khung hình với video.

Ví dụ về yêu cầu tải lên nối tiếp với hình thu nhỏ

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"

Ví dụ về phản hồi ở định dạng JSON

{
  "success":true
}

Ví dụ về yêu cầu tải lên không nối tiếp với hình thu nhỏ

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"

Phản hồi mẫu

{
  "id":"287788272232962"
}