包含和排除直播視像的特定受眾。
對於專頁上的直播視像,您將需要:
CREATE_CONTENT
任務的用戶所要求對於群組中的直播視像,您將需要:
傳送 POST /id
要求(其中 id
為 LiveVideo 編號),並設定 targeting
欄位及其參數。
curl -i -X POST \
"https://graph.facebook.com/LIVE_VIDEO_ID
?targeting={age_min:17, geo_locations:{countries:["US","CA","MX"]}}
&access_token=ACCESS_TOKEN"
{ "targeting": { "age_max": 65, "age_min": 17, "geo_locations": { "countries": [ "US", "CA", "MX" ] } }, "id":"LIVE_VIDEO_ID" }
對於專頁上的直播視像,您將需要:
CREATE_CONTENT
任務的用戶所要求對於群組上的直播視像,您將需要:
傳送 GET /id
要求(其中 id
為 LiveVideo 編號),且要求含有 targeting
欄位。
curl -i -X GET \
"https://graph.facebook.com/LIVE_VIDEO_ID
?fields=targeting&access_token=ACCESS_TOKEN"
{ "targeting": { "age_max": 65, "age_min": 17, "geo_locations": { "countries": [ "US" "CA", "MX" ] } }, "id":"LIVE_VIDEO_ID" }
在解碼直播的初始串流數據並處理任何關聯的 API 要求時,直播可能會稍有延遲。這可能會使主播難以準確知道直播何時開始。為避免此問題,可將 LiveVideo 物件設定為接受串流數據,但在串流數據本身中偵測到開始直播 RTMP 訊息之後方會向觀眾直播。因此,任何能夠預覽直播的用戶都可以觀看直播,同時,串流編碼器能夠準確地控制向觀眾開始直播的時間及觀眾看到的第一個畫格。
為準確地控制開始直播時的畫格,首先需要像往常一樣建立 LiveVideo 物件,並將其狀態設定為「PREVIEW」。建立完成後,查詢 LiveVideo 物件並要求帶有以下巢狀欄位的 secure_stream_url 欄位:
secure_stream_url.inband_go_live(require_inband_signal)
這將在 LiveVideo 物件上準確地控制開始直播時的畫格,而且 API 將以新的安全串流網址回應,以便您隨後在此網址上串流直播。您可以忽略最初建立 LiveVideo 物件時傳送給您的初始安全串流網址。
系統將在以下事件發生後開始直播,並對觀眾顯示:(1) 直播狀態設定為「LIVE」(經 Graph API 調用或用戶從直播管理工具發佈),以及 (2) 編碼器傳送開始直播 RTMP 訊息後。
AMF0 封包(類型 0x12),內含:
onGoLive
timestamp
在 LiveVideo 上啟用準確地控制開始直播時的畫格之要求範例。
curl -i -X GET \ "https://graph.facebook.com/v19.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" }
從 2021 年 5 月 25 日開始,開始直播對話框將會停用。詳情請參閱我們的網誌文章。
為盡可能令 Live API 整合流程變得輕鬆,我們建立了一個附加程式,讓您能夠在開始直播前透過 Facebook 驗證身分、預覽直播串流影片、以及透過彈出視窗描述直播串流影片內容。此對話框最適合從用戶端串流內容的用戶。後端整合應繼續直接使用 API。
如要將彈出視窗初始化(其中含有能夠決定 POST
回應的指向位置之控制項),請插入以下代碼。
<button id="liveButton">Create Live Stream To Facebook</button> <script> document.getElementById('liveButton').onclick = function() { FB.ui({ display: 'popup', method: 'live_broadcast', phase: 'create', }, function(response) { if (!response.id) { alert('dialog canceled'); return; } alert('{your-stream-url}:' + response.secure_stream_url); FB.ui({ display: 'popup', method: 'live_broadcast', phase: 'publish', broadcast_data: response, }, function(response) { alert("video status: \n" + response.status); }); }); }; </script>
參數 | 值 | 描述 |
---|---|---|
|
| 對話框在網頁中開啟的方式。 |
|
| 建立階段的對話框可讓您取得串流網址以上載影片;發佈階段的對話框會提供預覽畫面與「開始直播」按鈕。 |
| 從 API 或 | 此參數在 |
在建立階段的彈出式視窗中,選擇直播串流影片目標位置,這可以是任何由您管理的專頁或群組。POST
回應中會包含 stream_url
與 secure_stream_url
欄位。每個欄位都能細分為伺服器網址與串流金鑰。
伺服器網址是 stream_url 的前半段:rtmp://rtmp-api.facebook.com:80/rtmp/
串流金鑰是 stream_url 的後半段:10153307708286557?ds=1&a=AdrRKk4mOaqPbQdxDuk
回應欄位 | 階段 | 描述 |
---|---|---|
|
| 直播影片的編號。 |
|
| 用於上載直播串流影片的 RTMP 網址,其中包含串流影片伺服器和串流影片密鑰。 |
|
| 為 rtmps 網址,該串流網址擁有安全通訊協定。 |
|
| 指明直播內容狀態的字串值。 |
在我們的代碼片段中,存在著含有 stream_url
的 alert
調用。用戶端應會使用 stream_url
開始直播。串流開始不久後,您就會在發佈階段的彈出式視窗中看到直播的預覽畫面。用戶可透過對話框選擇私隱設定,而無需調整要求的私隱參數,並設定直播視像描述、標題和主題標籤。
請注意:若發佈彈出式視窗顯示為離線,請檢查您的防火牆是否封鎖了 RTMP,並確認瀏覽器的 Adblocker 軟件都處於關閉狀態。
點擊開始直播後,對話框便將關閉,而且系統會在幾秒鐘後根據所選目標位置,在專頁或群組中播放直播串流影片。
中繼資料會以準確地控制開始時間的畫格,插入直播視像的第一個畫格。編碼器可執行倒數計時,提醒發佈商影片的準確開始時間。您亦可從 Facebook 介面開始或停止影片播放。