지원

FAQ

스트리밍 소프트웨어, 또는 RTMP 인코딩 소프트웨어는 RTMP 스트리밍 URL과 키를 가져와 Facebook으로 전송합니다. Facebook에서는 스트리밍 소프트웨어를 제공하지 않습니다. 대부분 라이브 스트리밍은 OBS(Open Broadcasting Software) 또는 Player.me를 사용할 수 있으며, 그 두 가지 모두 무료 버전을 제공합니다.

Live API는 바로 사용할 수 있습니다. 그러나 여러 개의 카메라와 그래픽으로 완전한 프로덕션 품질의 스트리밍을 생성하려면 앱 검수에 따라 1~2주 이상이 소요될 수 있습니다.

라이브 방송을 시작한 시점과 Facebook에 영상이 표시되는 시점에는 약 4~5초의 지연이 있습니다. 테스트(또는 공개) 페이지에서 영상이 재생되는 것을 보면 게시되었는지 알 수 있습니다.

라이브 스트리밍에 문제가 있다면 라이브 방송 문제 해결 가이드를 참조하세요. 또한, 양질의 라이브 스트리밍에 알맞게 설정하려면 사양 가이드를 참조하는 것이 좋습니다. 버그가 나타났을 경우 버그 도구로 직접 보내면 엔지니어가 답변을 드릴 것입니다.

네, 가능합니다! 두 번째 스트리밍은 첫 번째 스트리밍보다 유도된 알림이 적을 가능성이 큽니다. 라이브 알림의 작동 원리에 대한 자세한 내용은 Facebook 문서를 참조하세요.

반드시 그렇지는 않습니다. 서로 다른 두 개(또는 그 이상)의 페이지에 스트리밍하고자 할 경우, Wowza나 Streamshark와 같이 이런 기능을 지원하는 인코더와 API가 있습니다. 하나의 인코더에서 다른 여러 페이지로 스트리밍할 수는 있지만 한 페이지로 스트리밍한 다음, 다른 페이지로 공유해 댓글, 반응, 시청자 수를 통합하는 것이 좋습니다.

Facebook의 기본 화면 비율은 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(Videos On Demand) 상태여야 볼 수 있습니다. 그러나 다른 사이트에 임베드된 라이브 방송을 모바일 웹에서 보려고 하면 방송을 시청할 Facebook 앱으로 리디렉션됩니다.

이런 현상이 일어날 만한 이유는 몇 가지가 있습니다. 가장 일반적인 이유의 몇 가지 예시는 다음과 같습니다.

  1. 라이브 방송 백그라운드에 음악이 재생되고 있으면 저작권 위반으로 동영상이 중단될 수 있습니다. 이런 일은 라이브 방송 중이나 그 이후에 VOD 재생에서 발생할 수 있습니다.
  2. 사용자, 또는 사용자 페이지의 다른 저자가 라이브 방송을 삭제했을 수 있습니다. 라이브 방송이 수동으로 삭제된 경우에는 복원할 수 없습니다.
  3. 동영상이 IP 위반으로 자동 플래그 되었을 수 있습니다. 이런 문제가 발생하면 Facebook에서 동영상을 다시 제출하기 위한 링크가 포함된 이메일을 발송하여 동영상 삭제를 검토하고 Facebook 정책팀에서 검토할 수 있게 합니다.

라이브 방송 종료 신호를 보낸 뒤에도 방송이 실링이나 처리를 시작하지 않을 경우에 이런 현상이 발생합니다. end_live_video 매개변수를 포함해 POST 요청을 보냈는지 확인하세요. 이런 현상이 다시 발생하면 동영상 ID를 포함하여 버그 도구에 버그를 신고하세요.

Facebook이 오디오가 왜곡된 상태로 동영상 스트리밍을 수신하거나 프레임을 수신했지만 아직 방송에 맞게 다시 인코딩하지 않은 상태에서 오디오 왜곡이 발생할 수 있습니다. 이런 유형의 오류가 발생할 만한 원인으로는 사용한 비트 속도가 방송 엔드포인트와 Facebook 서버 간의 연결에서 감당할 수 있는 것보다 더 높은 경우가 있습니다. 위와 같은 현상이 발생하거나 패킷 손실이 있으면 동영상 또는 오디오 트랙의 일부가 올바르게 수신되지 않아 오디오 왜곡을 일으킬 수 있습니다.

라이브 방송을 제한된 대역폭으로 클라이언트에게 전달하거나 클라이언트에 방송을 라이브로 시청할 대역폭이 없을 경우 오디오/영상 싱크 문제가 발생할 수 있습니다. 또한, Facebook 서버에서 수신한 스트리밍의 싱크가 맞지 않으면 라이브 방송도 싱크가 맞지 않습니다. 레코딩 및 인코딩 하드웨어로 오디오와 동영상의 싱크가 맞지 않을 만한 잠재적인 위치를 확인하세요.

라이브 방송 API는 오디오가 필요합니다. 동영상만 스트리밍하려고 시도하면 스트리밍이 종료됩니다.

인코더 장애나 네트워크 연결이 불안정해서 라이브 피드가 중단될 수 있습니다. 이러한 경우가 발생하면 2~3분 내로 라이브 게시물에 생성한 원래 스트리밍 URL로 다시 연결해야 합니다. 그렇지 않으면 새 스트리밍 키와 URL을 생성해 라이브 스트리밍을 계속해야 합니다.

네, 지역 차단(시청자의 위치에 따라 방송 시청 대상 제한)을 적용할 수 있습니다. 공개 대상 타게팅에 대한 고급 사용 가이드에서 라이브 방송의 targeting 필드에 대해 자세히 알아보세요.

네, 저작권 위반으로 삭제된 동영상은 복원할 수 있습니다. 동영상을 복원하는 옵션이 있는 알림이 전송됩니다. 그러나 알림을 받았을 때 조치를 취하지 않으면 동영상을 복원할 수 없게 됩니다.

아니요, 안타깝게도 현재는 라이브 방송을 홍보할 수 없습니다.

현재는 청각장애인용 자막을 생성하기 위한 엔드포인트가 없습니다. 그러나 라이브 방송이 끝난 후에 청각장애인용 자막을 추가하거나 서버로 라이브 방송을 스트리밍할 때 CEA-608 청각장애인용 자막 표준을 사용하여 추가할 수 있습니다.

종료된 라이브 방송(VOD 상태)에 캡션을 추가하려면 "제 페이지의 동영상에 캡션을 추가하는 방법은 무엇인가요?"라는 도움말 주제를 참조하세요. CEA-608 표준을 사용하여 캡션을 추가하려면 청각장애인용 캡션 가이드를 참조하세요.

타사 광고를 라이브 스트리밍에 포함하는 것은 Facebook의 라이브 방송 정책에 어긋납니다. 예를 들어 범퍼, 프리롤, 미드롤 또는 포스트롤을 포함하지 마세요.

시청자의 경험이 온전하게 유지되도록 라이브 방송에는 오직 라이브 콘텐츠만 포함하는 것이 좋습니다. 그러나 사전에 녹화된 클립을 사용하는 것이 알맞은 특수한 사례가 있습니다. 이는 뉴스에서 라이브 TV로 이전에 녹화한 콘텐츠를 보여주는 것과 유사합니다. 자세한 내용은 사양, 브랜디드 콘텐츠 및 저작권 가이드를 참조하세요.

라이브 지도에 표시되려면 POST /{live_video_id} 요청에서 place 매개변수를 사용하여 동영상의 위치를 설정해야 합니다.

영구 키를 재설정하려면 www.facebook.com/live/create로 이동해서 라이브 스트리밍 생성을 클릭하고, 영구 스트리밍 키 사용 확인란을 선택한 다음, 재설정 버튼을 클릭합니다.

버그 신고

Live API에서 버그를 발견한 경우 버그 도구에서 버그를 신고하면 엔지니어가 곧 조사를 시작합니다. 또한 API 오류 코드, SDK 메서드 등으로 기존 버그를 검색할 수도 있습니다.

버그 신고하기