Facebook 專用直播視訊 API 支援

常見問題

串流軟體或 RTMP 編碼軟體可取得您的 RTMP 串流影片網址和金鑰,並傳送至 Facebook。我們並未提供串流軟體。許多直播串流影片可使用 OBS(Open Broadcasting Software)或 Player.me,這兩者皆提供免費版本。

Live API 很快就能開始使用。不過,如果想用多部攝影機和圖形裝置建立有完整生產品質的串流影片,則視應用程式審查而定可能需要 1 至 2 週以上的時間。

從您開始直播到影片開始出現在 Facebook 上,中間約有 4 至 5 秒的延遲。當您看到影片開始在測試(或公開)粉絲專頁上播放,即代表串流已經開始。

如果您的直播串流影片發生問題,請參閱我們的直播視訊疑難排解指南。亦建議您參閱我們的規格指南,以確定您的設定適合高品質的直播串流影片。如果您認為您遇到了故障,可直接發送至我們的故障提報工具,工程師會盡快與您聯絡。

是的,可以!第二個串流影片的推斷通知數量可能會比第一個少。如需詳細資訊,請參閱我們關於直播通知運作方式的文件。

不需要。如果您想串流到兩個(或以上)不同的粉絲專頁,有編碼器和 API 可進行這類工作,例如 Wowza 和 Streamshark。雖然用同一個編碼器也能串流到不同的粉絲專頁,但還是建議串流到一個粉絲專頁,然後再分享到其他粉絲專頁,以方便整合留言、心情和瀏覽者人數。

雖然我們從串流影片推斷長寬比,但預設長寬比為 16x9。如需更多技術規格,請參閱規格、品牌置入內容和著作權指南

您可透過直播視訊 API 使用 embeddable 參數內嵌直播視訊

發送 POST /{live_video_id} 要求,並將 embeddable 參數設定為 true。使用擁有與建立直播視訊時所需相同權限的粉絲專頁或用戶存取權杖。

curl -i -X POST \
 "https://graph.facebook.com/{your-live-video-id}
   ?embeddable=true&access_token={your-access-token}"
GraphRequest request = GraphRequest.newPostRequest(
  accessToken,
  "/{your-live-video-id}",
  new JSONObject("{}"),
  new GraphRequest.Callback() {
    @Override
    public void onCompleted(GraphResponse response) {
      // Insert your code here
    }
});
request.executeAsync();
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"/{your-live-video-id}"
           parameters:@{ @"embeddable": @"true",}
           HTTPMethod:@"POST"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    // Insert your code here
}];
FB.api(
  '/{your-live-video-id}',
  'POST',
  {"embeddable":"true"},
  function(response) {
      // Insert your code here
  }
);
try {
  // Returns a `FacebookFacebookResponse` object
  $response = $fb->post(
    '/{your-live-video-id}',
    array (
      'embeddable' => 'true'
    ),
    '{access-token}'
  );
} catch(FacebookExceptionsFacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(FacebookExceptionsFacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();

若要取得內嵌的 HTML,請發送 GET /{live_video_id}?fields=embed_html 要求。使用擁有與建立直播視訊時所需相同權限的粉絲專頁或用戶存取權杖。

curl -i -X GET \
 "https://graph.facebook.com/{your-live_video_id}
   ?fields=embed_html
   &access_token={your-access-token}"
GraphRequest request = GraphRequest.newGraphPathRequest(
  accessToken,
  "/{your-live_video_id}",
  new GraphRequest.Callback() {
    @Override
    public void onCompleted(GraphResponse response) {
      // Insert your code here
    }
});

Bundle parameters = new Bundle();
parameters.putString("fields", "embed_html");
request.setParameters(parameters);
request.executeAsync();
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"/{your-live_video_id}"
           parameters:@{ @"fields": @"embed_html",}
           HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    // Insert your code here
}];
FB.api(
  '/{your-live_video_id}',
  'GET',
  {"fields":"embed_html"},
  function(response) {
      // Insert your code here
  }
);
try {
  // Returns a `FacebookFacebookResponse` object
  $response = $fb->get(
    '/{your-live_video_id}',
    '{access-token}'
  );
} catch(FacebookExceptionsFacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(FacebookExceptionsFacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();

回應範例

{ "embed_html": "<iframe src=\"https://www.facebook.com/plugins/video.php?href=https%3A%2F%2Fwww.facebook.com%2Fyourpage%2Fvideos%2F{your-page-id}%2F&width=0\" width=\"0\" height=\"0\" style=\"border:none;overflow:hidden\" scrolling=\"no\" frameborder=\"0\" allowTransparency=\"true\" allowFullScreen=\"true\"></iframe>", "id": "{your-live-video-id}" } 

不,此為預期的行為。我們目前不支援在行動版網頁上觀看尚未另存為 VOD(點播影片)的直播視訊。不過,如果您想在已嵌入到其他網站的行動版網頁上觀看直播視訊,畫面將重新導向至 Facebook 應用程式以進行觀看。

有一些原因可能導致此狀況。以下列舉一些最常見的原因:

  1. 如果您的直播視訊有音樂在背景中播放,則您的影片可能因為違反著作權而遭撤下。此狀況可能發生在直播視訊或之後的 VOD 重播時。
  2. 您自己或您粉絲專頁的其他作者可能已刪除直播視訊。如果已手動刪除直播視訊,將無法再恢復。
  3. 系統可能自動將您的影片標示為違反智慧財產權。在此情況下,Facebook 會寄一封內含連結的電子郵件給您,供您檢閱撤下的影片並重新提交影片,交由我們的政策團隊審核。

這是因為直播未在發出直播視訊結束的訊號後開始保護或處理視訊。請使用 end_live_video 參數,發送 POST 要求。如果仍出現此問題,請在故障提報工具中回報故障,且務必加入影片編號。

當 Facebook 收到音訊失真的影片串流,或我們在收到影格之前已先重新編碼直播時,便可能發生音訊失真的狀況。發生此類錯誤,其中一個原因可能是所使用的位元速率高於直播端點與 Facebook 伺服器之間連線所能維持的速率。如果是這種情況,或如果發生了封包遺失,將無法正確接收部分的視訊軌或音訊軌,如此便會導致音訊失真。

當直播視訊是透過有限的頻寬傳送至用戶端,或用戶端沒有足夠的頻寬可觀看直播時,就可能出現影音同步問題。此外,如果 Facebook 伺服器收到串流影片時便已不同步,則直播視訊也會不同步。務必檢查錄製和編碼的硬體是否有問題,因而造成音訊與視訊不同步。

直播視訊 API 須有音訊。如果嘗試串流只有視訊的影片,串流便會結束。

您的直播動態可能因編碼器故障或網路連線狀態不佳而中斷。發生此情況時,您可在 2 至 3 分鐘內重新連線至您為直播貼文產生的原始串流影片網址。否則,您將需要產生新的串流影片金鑰和網址,以繼續直播串流影片。

是的,您可以設定地理閘道(限制只有特定地點的瀏覽者可觀看影片)。若要深入瞭解直播視訊的 targeting 欄位,請查看我們關於廣告受眾目標設定的進階使用指南

可以,因違反著作權而遭撤下的影片仍能還原。您會收到通知,通知內有讓您還原影片的選項。不過,如果您在收到通知時未採取此動作,將無法再還原影片。

不,很抱歉,目前無法加強推廣直播視訊。

目前沒有端點可用來建立隱藏字幕。但您可以在 LiveVideo 直播結束後新增隱藏字幕,或在直播視訊串流至我們的伺服器時使用 CEA-608 隱藏字幕標準在影片中新增隱藏字幕。

若要在已結束的 LiveVideo(即具備 VOD 狀態)中新增字幕,請參閱我們的「如何在粉絲專頁的影片中新增字幕?」說明主題。若要使用 CEA-608 標準新增字幕,請參閱我們的隱藏字幕指南

在直播串流影片中新增第三方廣告,將違反 Facebook 的直播視訊政策。例如,請勿包含前串場廣告、片頭廣告、片中廣告或片尾廣告。

我們建議所有直播播放只包含直播內容,讓瀏覽者可以得到完整的觀看體驗。但針對需要裁切預錄影片片段的特殊情況,就像新聞節目也可能在直播節目中播放先前錄製的內容。請參閱我們的規格、品牌置入內容和著作權指南

是的,您可以多文發佈直播視訊。請參閱使用多文發佈影片上傳使用說明:我要如何多文發佈其他粉絲專頁的影片。留言和傳達心情只會在原本的粉絲專頁上顯示。

若要出現在 Live 地圖上,您必須在 POST /{live_video_id} 要求中使用 place 參數,以設定影片位置。

若要重設持續性金鑰,請前往 www.facebook.com/live/create,點擊建立直播串流影片,勾選使用持續性串流金鑰核取方塊,然後點擊重設按鈕。

回報故障

如果您認為您在 Live API 中發現了故障,請在故障提報工具中回報故障,我們的工程師將盡快查看。您也可用 API 錯誤代碼、SDK 方法等來搜尋現有的故障。

回報故障