- มีการเพิ่ม WHIP (WebRTC-HTTP Ingestion Protocol) muxer เข้าใน FFmpeg อย่างเป็นทางการ ทำให้รองรับ สตรีมมิงหน่วงต่ำมากต่ำกว่า 1 วินาที ได้โดยตรง
- คอมมิตนี้ปรับโครงสร้างและการตั้งชื่อของ WHIP muxer ใหม่ พร้อมปรับปรุง ข้อความแสดงข้อผิดพลาดและล็อกของ SSL/DTLS/RTC
- มีการอัปเดตพารามิเตอร์โปรโตคอลสำคัญ เช่น DTLS curve/profile, RTP payload, ICE STUN ให้สอดคล้องกับข้อกำหนดของ Chrome และแยก magic number ออกเป็นแมโครและฟังก์ชัน
- กระบวนการ DTLS handshake และการจัดการ ICE ถูกรวมและปรับแต่งให้อยู่ในฟังก์ชันเดียว ส่งผลให้ ประสิทธิภาพและเสถียรภาพ ดีขึ้นอย่างมาก
- แก้บั๊กด้าน audio และ video transcoding (เช่น h264_mp4toannexb, OPUS timestamp, การตั้งค่า marker ฯลฯ) ทำให้เข้ากันได้ดียิ่งขึ้นกับสภาพแวดล้อม WebRTC มาตรฐาน
- มีการระบุ dependency ของ OpenSSL ให้ชัดเจนขึ้น โดยจะ build WHIP เฉพาะเมื่อรองรับ DTLS เท่านั้น
- ทำให้การสร้างสภาพแวดล้อม การออกอากาศและสตรีมแบบเรียลไทม์บน WebRTC ทำได้ง่ายขึ้นด้วย FFmpeg เพียงอย่างเดียว และสามารถใช้ประโยชน์จากคุณสมบัติหน่วงต่ำมากเมื่อเทียบกับโปรโตคอลแบบ legacy อย่าง RTMP ได้
avformat/whip: เพิ่มการรองรับ FFmpeg WHIP muxer
สรุปการเปลี่ยนแปลงหลัก
- เพิ่ม muxer อย่างเป็นทางการบนพื้นฐาน WHIP Version 3 พร้อมปรับระเบียบชื่อเรียกและโครงสร้างภายใน
- บริบทของล็อกและข้อความแสดงข้อผิดพลาด ของ SSL, DTLS และ RTC ชัดเจนขึ้นมาก
- แยก magic number ที่เคยฮาร์ดโค้ดไว้ออกเป็นแมโครและฟังก์ชันเฉพาะ เพื่อให้ดูแลรักษาได้ง่ายขึ้น
- ปรับ รายการ DTLS curve, ชื่อ SRTP profile ฯลฯ ให้ตรงกับมาตรฐานของ FFmpeg และ OpenSSL
- อัปเดต ICE STUN magic number และ RTP payload type ให้สอดคล้องกับมาตรฐานของเบราว์เซอร์ Chrome
- แก้ปัญหา media processing เช่น ขนาดเฟรมเสียง, การแปลง H.264 MP4→AnnexB, OPUS timestamp ฯลฯ
- รวมลอจิก DTLS handshake และการจัดการ ICE ไว้ใน ฟังก์ชันเดียว เพื่อให้ง่ายต่อการดูแล
- ทำให้เงื่อนไขการรองรับ DTLS บน OpenSSL ชัดเจนขึ้น ส่งผลให้ ข้อผิดพลาดในการ build และความเข้ากันได้ ดีขึ้น
- รวมโครงสร้างภายในของ TLS/DTLS เช่น SRTP, BIO callback, การเริ่มต้น CA key/ใบรับรอง ฯลฯ
- มีการแก้ไขและเพิ่มไฟล์ใหม่รวม 13 ไฟล์ เช่น การเพิ่มไฟล์ whip.c
ที่มาและความหมาย
- WHIP เป็นโปรโตคอลมาตรฐานแบบ HTTP สำหรับการส่งสตรีมบน WebRTC และเป็นองค์ประกอบสำคัญของการไลฟ์สดแบบหน่วงต่ำมาก
- ก่อนหน้านี้ การเข้ารหัสและส่งออก WebRTC บน FFmpeg ต้องอาศัยเครื่องมือแยกต่างหากหรือการทำรีเลย์ที่ซับซ้อน แต่การ merge ครั้งนี้ทำให้ สามารถส่งออกผ่าน WHIP ด้วยคำสั่ง FFmpeg เพียงคำสั่งเดียว
- นี่เป็นจุดเปลี่ยนทางเทคนิคที่ช่วยให้เชื่อมต่อกับ ระบบนิเวศ WebRTC สมัยใหม่ได้โดยตรง ในหลากหลายงาน เช่น การถ่ายทอดสดแบบเรียลไทม์ ไลฟ์คอมเมิร์ซ และวิดีโอคอนเฟอเรนซ์
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
--without-whipซึ่งถ้าทำได้ก็น่าจะดีที่สุด./configureที่ถูกต้องได้ยาก--enable-muxer=whipและ--enable-openssl