การส่งเนื้อหา YouTube แบบสดผ่าน RTMPS

เอกสารนี้อธิบายวิธีใช้ RTMPS เพื่อสตรีมข้อมูลแบบสดบน YouTube จากโปรแกรมเปลี่ยนไฟล์ RTMPS คือสตรีมวิดีโอ RTMP (RealTime Messaging Protocol) ปกติที่ส่งผ่านการเชื่อมต่อ SSL เอกสารนี้มีไว้สำหรับผู้ให้บริการโปรแกรมเปลี่ยนไฟล์ที่ต้องการเพิ่มการรองรับ RTMPS ในโปรแกรมเปลี่ยนไฟล์ที่รองรับ RTMP อยู่แล้ว

RTMPS เป็นตัวเลือกที่ดีสำหรับเนื้อหาของผู้ใช้ทั่วไปส่วนใหญ่ โดยเฉพาะอย่างยิ่งหากต้องใช้เวลาในการตอบสนองต่ำ ดูภาพรวมของโปรโตคอลการรับส่งข้อมูลต่างๆ ที่ YouTube Live Streaming รองรับได้ที่ การเปรียบเทียบโปรโตคอลการรับส่งข้อมูล

ข้อกำหนด

การส่ง RTMPS ไปยัง YouTube Live มีข้อกำหนดเบื้องต้นบางประการดังนี้

  • แต่ละส่วนของ URL การเชื่อมต่อ (<protocol>://<server>/<path>) ต้อง ถูกต้อง:
    • โปรโตคอลต้องเป็น rtmps
    • เซิร์ฟเวอร์ต้องเป็นปลายทางการรับส่งข้อมูล RTMPS ของ YouTube ที่ถูกต้อง
    • เส้นทางต้องเป็นชื่อแอปพลิเคชัน RTMP ของ YouTube Live ที่ถูกต้อง
  • การเชื่อมต่อต้องทำกับพอร์ต 443 ในเซิร์ฟเวอร์การรับส่งข้อมูล
  • ต้องส่งสตรีมมัลติมีเดียด้วย RTMPS นั่นคือใช้ RTMP ผ่านการเชื่อมต่อ SSL

การรับ URL การเชื่อมต่อ

หากโปรแกรมเปลี่ยนไฟล์ของคุณใช้ YouTube Live API อยู่แล้ว กระบวนการรับ URL การรับส่งข้อมูล RTMPS จะคล้ายกับกระบวนการรับ URL การรับส่งข้อมูล RTMP ส่งคำขอ LiveStreams insert (POST) เพื่อสร้างสตรีมการรับส่งข้อมูลใหม่ ในคำตอบ ช่อง cdn.ingestionInfo.rtmpsIngestionAddress จะระบุ URL RTMPS หากคุณรองรับการรับส่งข้อมูลแบบคู่ ที่อยู่สำรองคือ cdn.ingestionInfo.rtmpsBackupIngestionAddress

การสร้างการเชื่อมต่อ

ใช้ไลบรารีซ็อกเก็ตที่คุณต้องการเพื่อสร้างการเชื่อมต่อ SSL/TLS กับพอร์ต 443 ที่เซิร์ฟเวอร์ซึ่ง URL การรับส่งข้อมูลระบุ เนื่องจาก TLS ทำงานกับเลเยอร์การรับส่งข้อมูลเท่านั้น จึงไม่จำเป็นต้องใช้ชื่อโฮสต์ของเซิร์ฟเวอร์อย่างเคร่งครัดในการเริ่มต้นการเชื่อมต่อ แต่จำเป็นสำหรับการตรวจสอบสิทธิ์กับเซิร์ฟเวอร์ของเรา ดังนั้น ตรวจสอบว่าคุณได้เพิ่มส่วนขยาย SNI (Server Name Indication) ลงในการจับมือ SSL และตั้งชื่อเซิร์ฟเวอร์เป็นชื่อโฮสต์ของเซิร์ฟเวอร์ที่คุณกำลังเชื่อมต่อ

เมื่อสร้างการเชื่อมต่อ SSL แล้ว ให้ใช้การเชื่อมต่อดังกล่าวเป็นไลบรารีของไคลเอ็นต์ RTMP การเชื่อมต่อ SSL ที่เริ่มต้นแล้วจะมี API เหมือนกับการเชื่อมต่อ TCP มาตรฐาน ดังนั้นไลบรารี RTMP จึงควรทำงานร่วมกับการเชื่อมต่อทั้ง 2 แบบได้เหมือนกัน

การแก้ปัญหา

ข้อผิดพลาด SSL

หากคุณพยายามสร้างการเชื่อมต่อ SSL แต่ได้รับใบรับรองที่ไม่ถูกต้อง แสดงว่าคุณอาจกำลังเชื่อมต่อกับเซิร์ฟเวอร์ของ YouTube ที่คาดหวัง RTMP ตรวจสอบว่าชื่อเซิร์ฟเวอร์ที่คุณใช้มี "rtmps" อยู่ด้วย (โปรดสังเกตตัว "s")

หาก URL ดูถูกต้องแต่คุณยังคงได้รับข้อผิดพลาด SSL แสดงว่าคุณอาจกำลังเชื่อมต่อกับพอร์ตที่ไม่ถูกต้อง ตรวจสอบว่าคุณกำลังเชื่อมต่อกับพอร์ต 443

หาก URL และพอร์ตถูกต้อง ไลบรารี SSL อาจจัดการใบรับรองไม่ถูกต้อง มองหาข้อความการวินิจฉัยระดับต่ำเกี่ยวกับความล้มเหลวของ SSL และตรวจสอบอีกครั้งว่าคุณใช้ SNI ในการจับมือ

การเชื่อมต่อหมดเวลา

หากคุณเชื่อมต่อกับเซิร์ฟเวอร์ได้ แต่ไลบรารี RTMP หมดเวลาโดยไม่ได้รับคำตอบที่สมเหตุสมผล แสดงว่าคุณอาจตั้งค่าการเชื่อมต่อ RTMP แบบข้อความธรรมดาไปยังเซิร์ฟเวอร์ของ YouTube ที่คาดหวัง RTMPS ตรวจสอบว่าคุณกำลังสร้างการเชื่อมต่อ SSL ไม่ใช่การเชื่อมต่อ TCP ธรรมดา