การสนับสนุนเกี่ยวกับ API วิดีโอถ่ายทอดสดสำหรับ Facebook

คำถามที่พบบ่อย

ซอฟต์แวร์การสตรีมหรือซอฟต์แวร์การเข้ารหัส RTMP จะรับ URL และคีย์ของการสตรีม RTMP แล้วส่งไปยัง Facebook เราไม่ได้ให้ซอฟต์แวร์การสตรีมมาด้วย สตรีมสดจำนวนมากสามารถใช้ OBS (Open Broadcasting Software) หรือ Player.me ซึ่งทั้งคู่มีเวอร์ชั่นฟรี

คุณสามารถเริ่มต้นใช้ Live API ได้ทันที อย่างไรก็ตาม หากคุณต้องการสร้างสตรีมด้วยคุณภาพระดับเต็มทีมการผลิตที่มีกล้องหลายตัวและกราฟิกจำนวนมาก อาจใช้เวลา 1-2 สัปดาห์หรือนานกว่านั้น ขึ้นอยู่กับการตรวจสอบแอพ

เมื่อคุณเริ่มถ่ายทอดสด จะมีความล่าช้าประมาณ 4-5 วินาทีกว่าที่วิดีโอของคุณจะปรากฏขึ้นบน Facebook คุณจะรู้ว่าวิดีโอของคุณกำลังถ่ายทอดสด เมื่อคุณเห็นวิดีโอแสดงบนเพจทดสอบ (หรือเพจสาธารณะ) ของคุณ

หากคุณกำลังมีปัญหากับสตรีมสด โปรดอ่านคู่มือการแก้ไขปัญหาวิดีโอถ่ายทอดสดของเรา นอกจากนี้ ยังขอแนะนำให้อ่านคู่มือข้อมูลจำเพาะของเราอีกด้วย เพื่อให้แน่ใจว่าการตั้งค่าของคุณเหมาะสมที่สุดสำหรับสตรีมสดที่มีคุณภาพ หากคุณเชื่อว่าคุณพบกับจุดบกพร่อง คุณสามารถส่งรายงานมายังเครื่องมือตรวจสอบจุดบกพร่องของเราโดยตรง แล้ววิศวกรจะติดต่อคุณกลับ

คุณสามารถทำได้ สตรีมที่สองมีแนวโน้มว่าจะได้รับการแจ้งเตือนที่คาดการณ์น้อยกว่าสตรีมแรก โปรดดูข้อมูลเพิ่มเติมในเอกสารประกอบเกี่ยวกับวิธีการทำงานของการแจ้งเตือนการถ่ายทอดสด

ไม่จำเป็น ถ้าคุณต้องการสตรีมสองเพจที่แตกต่างกัน (หรือมากกว่านั้น) มีตัวเข้ารหัสและ API ที่สามารถทำงานดังกล่าวได้ เช่น Wowza และ Streamshark ถึงแม้ว่าตัวเข้ารหัสตัวเดียวจะสามารถสตรีมเพจที่แตกต่างกันได้ แต่เราขอแนะนำให้สตรีมไปยังเพจหนึ่ง แล้วจึงแชร์ไปยังเพจอื่นๆ ดีกว่า เพื่อให้ความคิดเห็น ความรู้สึก และจำนวนผู้ชมรวมอยู่ในที่เดียวกัน

อัตราส่วนกว้างยาวเริ่มต้นของเราคือ 16x9 แม้ว่าเราจะอนุมานอัตราส่วนกว้างยาวจากสตรีมก็ตาม หากต้องการทราบข้อมูลจำเพาะทางเทคนิคเพิ่มเติม โปรดดูคู่มือข้อมูลจำเพาะ เนื้อหาที่มีแบรนด์ และลิขสิทธิ์ของเรา

คุณสามารถฝังวิดีโอถ่ายทอดสดโดยใช้พารามิเตอร์ embeddable ผ่าน API วิดีโอถ่ายทอดสด

ส่งคำขอ 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. วิดีโอของคุณอาจถูกรายงานปัญหาโดยอัตโนมัติว่ามีการละเมิด IP หากกรณีนี้เกิดขึ้น Facebook จะส่งอีเมลให้แก่คุณ ซึ่งจะมีลิงก์ให้คุณตรวจสอบการถอดออกและส่งวิดีโออีกครั้งเพื่อให้ทีมนโยบายของเราตรวจสอบ

สิ่งนี้เกิดขึ้นเมื่อการแพร่ภาพไม่ได้เริ่มการซีลหรือการประมวลผล หลังจากที่ส่งสัญญาณสิ้นสุดวิดีโอถ่ายทอดสดแล้ว คุณต้องส่งคำขอ POST พร้อมด้วยพารามิเตอร์ end_live_video หากยังคงเกิดขึ้นอีก โปรดแจ้งจุดบกพร่องนี้ในเครื่องมือตรวจสอบจุดบกพร่องของเรา และระบุ ID วิดีโอของคุณด้วย

อาการเสียงแตกสามารถเกิดขึ้นได้เมื่อ Facebook ได้รับการสตรีมวิดีโอที่มีเสียงแตก หรือหลังจากที่เราได้รับเฟรมแต่ได้รับก่อนที่จะเข้ารหัสอีกครั้งสำหรับการแพร่ภาพ เหตุผลที่เป็นไปได้สำหรับข้อผิดพลาดประเภทนี้เนื่องจากบิตเรตที่ใช้สูงเกินกว่าที่การเชื่อมต่อระหว่างตำแหน่งข้อมูลการแพร่ภาพของคุณกับเซิร์ฟเวอร์ของ Facebook จะสามารถรับได้ ซึ่งหากเกิดขึ้น หรือหากมีการสูญเสียแพ็คเก็ต ก็จะได้รับวิดีโอหรือแทร็กเสียงบางส่วนไม่ถูกต้องและทำให้เกิดอาการเสียงแตกได้

ปัญหาการประสานเวลาเสียง/ภาพอาจเกิดขึ้นเมื่อการแพร่ภาพสดถูกส่งด้วยแบนด์วิดท์ที่จำกัดไปยังไคลเอ็นต์ หรือไคลเอ็นต์ไม่มีแบนด์วิดท์ที่จะรับชมสดได้ นอกจากนั้น ถ้าสตรีมที่เซิร์ฟเวอร์ของ Facebook ได้รับไม่ประสานกัน วิดีโอถ่ายทอดสดก็จะไม่ประสานกันด้วย อย่าลืมตรวจดูฮาร์ดแวร์ในการบันทึกและเข้ารหัสด้วย เพื่อตรวจหาตำแหน่งที่เสียงอาจคลาดเคลื่อนไปจากวิดีโอได้

API วิดีโอถ่ายทอดสดต้องมีเสียง หากคุณพยายามสตรีมเฉพาะวิดีโอ สตรีมจะหยุดลง

ฟีดถ่ายทอดสดของคุณอาจขาดหายได้ เนื่องจากตัวเข้ารหัสไม่ทำงานหรือการเชื่อมต่อเครือข่ายไม่ดี ซึ่งถ้าเกิดขึ้น คุณมีเวลา 2-3 นาทีในการเชื่อมต่อกลับ URL สตรีมเดิมที่คุณสร้างขึ้นสำหรับโพสต์ถ่ายทอดสดของคุณ มิฉะนั้น คุณจะต้องสร้างคีย์และ URL ของสตรีมใหม่ เพื่อทำการสตรีมสดของคุณต่อไป

ได้ คุณสามารถควบคุมกลุ่มเป้าหมายตามภูมิศาสตร์ได้ (จำกัดผู้ที่สามารถดูวิดีโอของคุณตามตำแหน่งที่ตั้งของผู้ชม) ดู "คู่มือผู้ใช้ขั้นสูงเกี่ยวกับการกำหนดกลุ่มเป้าหมาย" ของเราเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับtargetingฟิลด์ของวิดีโอถ่ายทอดสด

ได้ สามารถกู้คืนวิดีโอที่ถูกถอดออกเนื่องจากการละเมิดลิขสิทธิ์ได้ คุณควรได้รับการแจ้งเตือนที่ให้ตัวเลือกในการกู้คืนวิดีโอ อย่างไรก็ตาม หากคุณไม่ดำเนินการดังกล่าวเมื่อคุณได้รับการแจ้งเตือน ก็จะไม่สามารถกู้คืนวิดีโอได้อีกต่อไป

ไม่ได้ ขณะนี้ยังไม่สามารถโปรโมทวิดีโอถ่ายทอดสดได้

ขณะนี้ยังไม่มีตำแหน่งข้อมูลในการสร้างคำบรรยายแทนเสียง อย่างไรก็ตาม คุณสามารถเพิ่มคำบรรยายแทนเสียงในการแพร่ภาพ LiveVideo หลังจากที่จบลงแล้วได้ หรือคุณสามารถเพิ่มคำบรรยายแทนเสียงในสตรีมวิดีโอถ่ายทอดสดของคุณในขณะที่สตรีมไปยังเซิร์ฟเวอร์ของเราโดยใช้มาตรฐานคำบรรยายแทนเสียง CEA-608

เพื่อเพิ่มคำบรรยายใน LiveVideo ที่จบลงแล้ว (กล่าวคือ มีสถานะ VOD) โปรดดูหัวข้อความช่วยเหลือ เรื่อง "วิธีเพิ่มคำบรรยายในวิดีโอของเพจ" ของเรา เพื่อเพิ่มคำบรรยายโดยใช้มาตรฐาน CEA-608 โปรดดูคู่มือคำบรรยายแทนเสียงของเรา

การนำโฆษณาจากภายนอกมาใส่ไว้ในสตรีมสดเป็นการขัดต่อนโยบายวิดีโอถ่ายทอดสดของ Facebook โปรดอย่าใส่โฆษณาบัมเปอร์ ก่อนวิดีโอ คั่นกลางวิดีโอ หรือหลังวิดีโอ เป็นต้น

เราขอส่งเสริมให้การแพร่ภาพสดทั้งหมดมีเนื้อหาที่ถ่ายทอดสดเพียงอย่างเดียว เพื่อรักษาความสมบูรณ์ของประสบการณ์ของผู้ชม อย่างไรก็ตาม มีบางกรณีที่การตัดไปยังคลิปที่บันทึกไว้ล่วงหน้ามีความสมเหตุสมผล เช่นเดียวกับที่รายการข่าวอาจแสดงเนื้อหาที่บันทึกไว้ก่อนหน้านี้บนรายการทีวีที่ถ่ายทอดสด โปรดดูคู่มือข้อมูลจำเพาะ เนื้อหาที่มีแบรนด์ และลิขสิทธิ์ของเรา

เพื่อให้ปรากฏบนแผนที่การถ่ายทอดสด คุณต้องตั้งค่าตำแหน่งที่ตั้งของวิดีโอของคุณโดยใช้พารามิเตอร์ place ในคำขอ POST /{live_video_id}

หากต้องการรีเซ็ตคีย์ถาวร ให้ไปที่ www.facebook.com/live/create แล้วคลิก "สร้างสตรีมสด" เลือกกล่องกาเครื่องหมาย "ใช้คีย์สตรีมถาวร" แล้วคลิกปุ่ม "รีเซ็ต"

การรายงานจุดบกพร่อง

หากคุณเชื่อว่าคุณอาจพบจุดบกพร่องใน Live API โปรดแจ้งรายงานจุดบกพร่องในเครื่องมือตรวจสอบจุดบกพร่องของเรา และวิศวกรจะเข้าไปตรวจสอบโดยเร็ว นอกจากนี้ คุณยังสามารถค้นหาจุดบกพร่องที่มีอยู่ได้ตามรหัสข้อผิดพลาดของ API, วิธีการ SDK และอื่นๆ

การรายงานจุดบกพร่อง