若要播放直播影片,您必須先建立 LiveVideo
物件。LiveVideo
物件代表直播,您可以透過操縱物件屬性來控制直播設定。建立後,API 將傳回 LiveVideo
物件編號和串流影片網址,然後您可將這些資料傳送到編碼器,用來將資料串流至 LiveVideo
物件。
Meta 將在 2024 年 6 月 10 日推出新的必備條件,帳號必須符合這些必備條件才能在 Facebook 上直播。新的必備條件如下:
若要在 User
物件上直播,請取得具備 publish_video
權限的用戶存取權杖,並傳送要求至:
POST /<USER_ID>/live_videos?status=LIVE_NOW
請參閱 /live_videos
關係連線參考資料,以取得可包含用來說明播的其他查詢字串參數,例如標題和說明。
測試 API 呼叫時,可以將 access_token
參數組合包含在存取權杖中。不過,從應用程式進行安全呼叫時,請使用存取權杖類別。
成功後,API 將在用戶建立 LiveVideo
物件,並傳回 secure_stream_url
和 LiveVideo
物件的 id
。只要將資料傳送至加密的串流影片網址,直播便會以貼文形式在用戶個人檔案上顯示。您可查詢 LiveVideo
物件,以監控直播的品質及結束直播。
curl -i -X POST \
"https://graph.facebook.com/v21.0
/<USER_ID>/live_videos
?status=LIVE_NOW
&title=Today%27s%20Live%20Video
&description=This%20is%20the%20live%20video%20for%20today."
{ "id": "1953020644813104", //<LIVE_VIDEO_ID> "stream_url": "rtmp://rtmp-api.facebook...", "secure_stream_url":"rtmps://rtmp-api.facebook..." }
若要在 Page
上播放直播視訊,請取得具備 pages_read_engagement
和 pages_manage_posts
權限之粉絲專頁管理員的粉絲專頁存取權杖,然後傳送要求至:
POST /<PAGE_ID>/live_videos?status=LIVE_NOW
請參閱 /live_videos
關係連線參考資料,以取得可包含用來說明播的其他查詢字串參數,例如標題和說明。
測試 API 呼叫時,可以將 access_token
參數組合包含在存取權杖中。不過,從應用程式進行安全呼叫時,請使用存取權杖類別。
成功後,API 將在粉絲專頁建立 LiveVideo
物件,並傳回 secure_stream_url
和 LiveVideo
物件的 id
。只要將資料傳送至加密的串流影片網址,直播便會以貼文形式在粉絲專頁上顯示。您可查詢 LiveVideo
物件,以監控直播的品質及結束直播。
curl -i -X POST \
"https://graph.facebook.com/v21.0
/<PAGE_ID>/live_videos
?status=LIVE_NOW
&title=Today%27s%20Page%20Live%20Video
&description=This%20is%20the%20live%20video%20for%20the%20Page%20for%20today"
{ "id": "1953020644813108", //<LIVE_VIDEO_ID> "stream_url": "rtmp://rtmp-api.facebook...", "secure_stream_url":"rtmps://rtmp-api.facebook..." }
您可讀取 LiveVideo
物件,以取得直播串流影片的預覽網址和串流健康狀態的資料,例如位元速率和影格速率。串流健康狀態資料每 2 秒重新整理一次,因此請將查詢限制在每 2 秒不超過一次。系統會偵測串流逾時,並在未收到資料超過 4 秒時回報。
若要讀取 LiveVideo
物件,請取得具備 publish_video
權限合適的用戶或粉絲專頁存取權杖,然後傳送查詢至:
GET /<LIVE_VIDEO_ID>?fields=<COMMA_SEPARATED_LIST_OF_FIELDS>
請使用 {fields}
參數指定想要傳回的 LiveVideo 物件欄位。例如,下列要求可取得 LiveVideo
物件上的 ingest_streams
,包括關於串流健康狀態的資料:
curl -i -X GET \
"https://graph.facebook.com/v21.0
/<LIVE_VIDEO_ID>?fields=ingest_streams"
{ "ingest_streams": [ { "stream_id": "0", "stream_url": "rtmp://rtmp-api.facebook...", "secure_stream_url": "rtmps://rtmp-api.facebook...", "is_master": true, "stream_health": { "video_bitrate": 4024116, "video_framerate": 60, "video_gop_size": 2000, "video_height": 720, "video_width": 1280, "audio_bitrate": 128745.4921875 }, "id": "1914910145231512" // <INGEST_STREAM_ID> } ], "id": "<LIVE_VIDEO_ID>" }
回應屬性
欄位名稱 | 說明 |
---|---|
audio_bitrate | 傳入音訊串流的每秒位元數。 |
is_master |
|
secure_stream_url | 查詢的直播影片編號的加密 RTMPS 嵌入網址。 |
stream_url | 查詢的直播影片編號的 RTMP 嵌入網址。 |
video_bitrate | 傳入影片串流的每秒位元數。 |
video_framerate | 傳入影片串流的每秒影格數。 |
video_gop_size | GOP(圖片群組)大小,單位為毫秒。 |
video_height | 傳入影片影格的像素高度。 |
video_width | 傳入影片影格的像素寬度。 |
若要結束直播,請從編碼器停止串流直播視訊資料到串流影片網址或傳送要求至:
POST /<LIVE_VIDEO_ID>?end_live_video=true
這會將 LiveVideo
物件的狀態設為 VOD
,並將其另存為點播影片(VOD),以供之後觀看。
成功時,API 會傳回 LiveVideo
物件的編號。
curl -i -X POST \
"https://graph.facebook.com/v21.0
/<LIVE_VIDEO_ID>?end_live_video=true"
{ "id": "10213570560993813" //<LIVE_VIDEO_ID> }
您可在 LiveVideo 編號上執行 GET
操作,以確認其狀態已設定為 VOD
:
GET /<LIVE_VIDEO_ID>?fields=status
{ "status": "VOD", // Broadcast ended, saved as VOD "id": "10213570560993813" //<LIVE_VIDEO_ID> }
若要刪除已結束的直播並將其另存為 VOD,請傳送要求至:
DELETE /<LIVE_VIDEO_ID>
curl -i -X DELETE \
"https://graph.facebook.com/v21.0
/<LIVE_VIDEO_ID>"
{ success: true }
在開始直播之前,當我們解碼其初始串流資料並處理任何相關的 API 要求時,可能會使直播產生輕微的延遲。此情況可能使直播人員難以確切地知道直播何時開始。若要避免此問題,您可以將 LiveVideo 物件設為接受串流資料,但設為在串流資料本身內偵測到直播 RTMP 訊息之前,不會向廣告受眾直播。如此允許任何能夠預覽直播的用戶看到直播,同時允許串流編碼器精確地同時控制向廣告受眾開始直播的時間以及廣告受眾看到的第一個影格。
若要啟用精確影格直播,請依正常方式建立一個 LiveVideo 物件,並將其狀態設為「預覽」。建立之後,查詢 LiveVideo 物件並要求包含以下巢狀欄位的 secure_stream_url 欄位:
secure_stream_url.inband_go_live(require_inband_signal)
上述動作將在 LiveVideo 物件上啟用精確影格直播,且 API 將使用新的安全串流網址進行回覆,您接著可以將影片串流到該網址。您可以忽略首次建立 LiveVideo 物件時,系統傳送給您的初始安全串流網址。
在(1)將直播狀態設為「已上線」(透過圖形 API 呼叫或從 Live Producer 發佈的用戶)以及(2)編碼器傳送直播 RTMP 訊息後,直播將開始並供廣告受眾觀看。
AMF0 封包(類型 0x12),包含以下內容:
onGoLive
字串timestamp
字串(類型 0x02)在 LiveVideo 上啟用精確影格直播的要求範例。
curl -i -X GET \
"https://graph.facebook.com/v21.0
/LIVE_VIDEO_ID?fields=secure_stream_url.inband_go_live(require_inband_signal)&access_token=12345..."
啟用精確影格直播的 LiveVideo 物件的安全串流網址。
{ "secure_stream_url": "rtmps://rtmp-pc.facebook.com:443/rtmp/LIVE_VIDEO_ID?s_bl=1&s_gl=1&...", "id": "LIVE_VIDEO_ID" }
若要取得與直播相關聯的錯誤代碼資料,請傳送要求至:
GET /<LIVE_VIDEO_ID>?fields=errors
API 會以 error code
、type
、message
和 timestamp
回覆。
curl -i -X GET \
"https://graph.facebook.com/v21.0
/<LIVE_VIDEO_ID>?fields=errors"
{ "errors": { "data": [ { "error_code": 1969004, "error_type": "stream", "error_message": "Video signal lost", "creation_time": "2018-12-05T23:58:52+0000" }, { "error_code": 1969004, "error_type": "stream", "error_message": "Video signal lost", "creation_time": "2018-12-05T23:58:52+0000" }, { "error_code": 0, "error_type": "info", "error_message": "Live Service received the video signal", "creation_time": "2018-12-05T23:58:02+0000" }, { "error_code": 0, "error_type": "info", "error_message": "Live Service received the video signal", "creation_time": "2018-12-05T23:58:02+0000" } ] }, "id": "{your-live-video-id}" }
error_subcode | 錯誤摘要 | 說明 |
---|---|---|
COPYRIGHT__LIVE_COPYRIGHT_VIOLATION | 直播違反著作權 | 直播影片可能因包含其他粉絲專頁所屬的影音內容而遭停止。 |
VIDEO__CREATE_FAILED | 上傳問題 | 發生問題,未上傳您的影片。請稍後再試。 |
LIVE_VIDEO__DELETE_FAILED | 未刪除直播影片 | 發生問題,無法刪除您的直播影片。請稍後再試。 |
LIVE_VIDEO__EDIT_API_NOT_ALLOWED | 直播時不允許透過影片 API 進行編輯 | 不允許使用影片編輯 API 編輯直播影片。請使用直播影片編號。 |
LIVE_VIDEO__LIVE_STREAM_ERROR | 一般串流 | 串流時發生問題 |
LIVE_VIDEO__NOT_EXIST | 直播影片不存在 | 您嘗試要存取的直播影片已不存在於系統。 |
LIVE_VIDEO__PRIVACY_REQUIRED | 需要隱私設定 | 您需要先設定隱私,才能進行直播。 |
Code | Subcode | Message | Type | Mitigation messaging |
---|---|---|---|---|
200 | 1363120 | Permissions error | OAuthException | You’re not eligible to go live Your profile needs to be at least 60 days old before you can go live on Facebook. Learn more at https://www.facebook.com/business/help/167417030499767?id=1123223941353904 |
200 | 1363144 | Permissions error | OAuthException | You’re not eligible to go live You need at least 100 followers before you can go live from your profile. Learn more at https://www.facebook.com/business/help/167417030499767?id=1123223941353904 |