การเริ่มต้นสตรีมแบบสดบน YouTube บนอุปกรณ์ Android

เลิกใช้งาน SDK นี้แล้ว เนื่องจาก YouTube ไม่ได้รับการสนับสนุนหรือบํารุงรักษาอุปกรณ์ดังกล่าวอีกต่อไป โปรดใช้ YouTube IFrame Player API แทน

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

ตัวอย่าง

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

  1. ขั้นแรก ผู้ใช้กําหนดค่าสตรีม ตั้งชื่อ โหมดความเป็นส่วนตัว และตัวเลือกสตรีมอื่นๆ
  2. จากนั้น ผู้ใช้จะถูกนําทางไปยังหน้าจอรูปภาพขนาดย่อเพื่อตั้งค่าภาพขนาดย่อสําหรับสตรีม
  3. สุดท้าย ผู้ใช้เริ่มสตรีมแบบสดและเผยแพร่มุมมองจากกล้องหน้าหรือกล้องหลัง

ข้อกําหนดของอุปกรณ์

อุปกรณ์ Android ต้องมีคุณสมบัติตามข้อกําหนดดังต่อไปนี้จึงจะสามารถรองรับสตรีมมิงแบบสดของ YouTube และ Deep Link ของ Mobile Live ได้อย่างเหมาะสม

  • Android เวอร์ชันเปิดตัว: Marshmallow (API 23) ขึ้นไป
  • กล้อง: กล้องอย่างน้อย 1 ตัวบันทึก 720p ได้อย่างน้อย 30 Hz
  • ไมโครโฟน: ไมโครโฟน
  • โปรแกรมเปลี่ยนไฟล์เสียง: ตัวเร่งเสียงที่มีการเร่งฮาร์ดแวร์สามารถเข้ารหัสเสียงแบบโมโน PCM 8 บิตเป็น AAC ที่ 44.1KHz หรือดีกว่า
  • ตัวเข้ารหัสวิดีโอ: ตัวเข้ารหัสวิดีโอที่มีการเร่งฮาร์ดแวร์ที่สามารถเข้ารหัสวิดีโอ 720P แบบข้อมูลดิบเป็น H.264/AVC ที่ความเร็ว 30Hz หรือสูงกว่า
  • แอป YouTube ที่ติดตั้งแล้ว: เวอร์ชัน 13.02 ขึ้นไป

ข้อกําหนดของ Intent แบบสดบนอุปกรณ์เคลื่อนที่

หากต้องการลิงก์กับขั้นตอนสตรีมมิงแบบสดของ YouTube สําหรับมือถือ แอป Android ของคุณจะเปิดตัว Intent Intent เริ่มต้นกระบวนการสตรีมมิงแบบสดโดยเริ่มกิจกรรมในแอปพลิเคชัน YouTube

รูปแบบความตั้งใจ

Mobile Live Intent ใช้สตริง Action ที่กําหนดเองเพื่อไปยังกิจกรรมการสร้างแบบสดภายในแอป YouTube และยังระบุชื่อแพ็กเกจสําหรับแอป YouTube บนอุปกรณ์เคลื่อนที่ด้วย

ส่วนเสริมโดยเจตนา

ขั้นตอนการตั้งค่าแอปพลิเคชัน YouTube จะจัดการการกําหนดค่าสตรีม พารามิเตอร์พิเศษของ Intent ต่อไปนี้จะตั้งค่าพารามิเตอร์ที่เชื่อมโยงกับสตรีมแบบสด

พารามิเตอร์
ความตั้งใจEXTRA_REFERRER Required พารามิเตอร์นี้เป็นตัวระบุ URI ที่แสดงถึงแอปพลิเคชันที่เรียกใช้กิจกรรมสตรีมมิงแบบสด ค่านี้ต้องเป็นไปตามรูปแบบ android-app: scheme ที่มีชื่อแพ็กเกจ ค่านี้จะเปิดใช้การระบุแหล่งที่มาและการบัญชีที่แม่นยํา
ความตั้งใจEXTRA_SUBJECT Optional พารามิเตอร์นี้ให้ข้อความอธิบายสตรีมแบบสด กลุ่มจะอยู่ใน Intent Extra Bundle เป็นสตริง คุณสามารถใช้ค่าเพื่อใส่คําอธิบายประกอบในสตรีมด้วยข้อความที่แสดงแบรนด์ เช่น "สตรีมแบบสดจาก DEVICE"

การเปิดตัวขั้นตอนสตรีมมิงแบบสด

ขั้นตอนที่ 1: ตรวจสอบการสนับสนุน

ลูกค้าของคุณควรยืนยันว่ามีการเปิดใช้งาน Intent ใน Mobile Live ก่อนโดยการยืนยันว่าได้ติดตั้งแอป YouTube ลงในอุปกรณ์แล้วและแอป YouTube เวอร์ชันที่รองรับสตรีมมิงแบบสด ตัวอย่างโค้ดต่อไปนี้จะกําหนดวิธีการสองแบบดังนี้:

  • เมธอด canResolveMobileLiveIntent จะยืนยันว่าอุปกรณ์รองรับ Mobile Live Intent
  • validateMobileLiveIntent เรียกใช้เมธอด canResolveMobileLiveIntent ในบริบทของคําสั่ง if-else
    • หากอุปกรณ์รองรับ Intent ก็อาจเปิดตัวสตรีมแบบสด
    • หากอุปกรณ์ไม่รองรับ Intent อุปกรณ์จะแจ้งให้ผู้ใช้ติดตั้งหรืออัปเกรดแอป YouTube
private boolean canResolveMobileLiveIntent(Context context) {
  Intent intent = new Intent("com.google.android.youtube.intent.action.CREATE_LIVE_STREAM")
    .setPackage("com.google.android.youtube");
  PackageManager pm = context.getPackageManager();
  List resolveInfo = 
    pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
  return resolveInfo != null && !resolveInfo.isEmpty();
}


private void validateMobileLiveIntent(Context context) {
  if (canResolveMobileLiveIntent(context)) {
    // Launch the live stream Activity
  } else {
    // Prompt user to install or upgrade the YouTube app
  }
}

ขั้นตอนที่ 2: เปิดกิจกรรมสตรีมแบบสด

ในการสร้างสตรีมมิ่งแบบสด แอปไคลเอ็นต์จะสร้างและเปิดใช้ Intent ดังที่แสดงในตัวอย่างโค้ดต่อไปนี้

private Intent createMobileLiveIntent(Context context, String description) {
  Intent intent = new Intent("com.google.android.youtube.intent.action.CREATE_LIVE_STREAM")
      .setPackage("com.google.android.youtube");
  Uri referrer = new Uri.Builder()
      .scheme("android-app")
      .appendPath(context.getPackageName())
      .build();

  intent.putExtra(Intent.EXTRA_REFERRER, referrer);
  if (!TextUtils.isEmpty(description)) {
    intent.putExtra(Intent.EXTRA_SUBJECT, description);
  }
  return intent;
}


private void startMobileLive(Context context) {
  Intent mobileLiveIntent = createMobileLiveIntent(context, "Streaming via ...");
  startActivity(mobileLiveIntent);
}