- FFmpeg đã chính thức bổ sung muxer WHIP (WebRTC-HTTP Ingestion Protocol), trực tiếp hỗ trợ streaming siêu độ trễ thấp dưới 1 giây
- Ở commit lần này, phần đặt tên và cấu trúc của WHIP muxer được cải tổ, đồng thời thông báo lỗi và log SSL/DTLS/RTC được cải thiện
- Các tham số giao thức chính như đường cong/hồ sơ DTLS, RTP payload, ICE STUN đã được cập nhật để khớp với định nghĩa của Chrome, và magic number được tách ra thành macro và hàm
- Bắt tay DTLS và xử lý ICE được hợp nhất và tối ưu vào một hàm duy nhất, giúp hiệu năng và độ ổn định cải thiện đáng kể
- Các lỗi liên quan đến transcoding âm thanh, video (
h264_mp4toannexb, timestamp OPUS, thiết lập marker, v.v.) đã được sửa, tăng khả năng tương thích với môi trường WebRTC chuẩn
- Làm rõ phụ thuộc vào OpenSSL, để WHIP chỉ được build khi có hỗ trợ DTLS
- Chỉ với FFmpeg, việc xây dựng môi trường phát sóng và luồng thời gian thực dựa trên WebRTC trở nên dễ dàng hơn, đồng thời có thể tận dụng đặc tính siêu độ trễ thấp so với các giao thức legacy như RTMP
avformat/whip: Thêm hỗ trợ FFmpeg WHIP muxer
Tóm tắt các thay đổi chính
- Chính thức đưa vào muxer dựa trên WHIP Version 3, đồng thời chỉnh lý tên gọi và cấu trúc nội bộ
- Ngữ cảnh log và thông báo lỗi của SSL, DTLS, RTC trở nên rõ ràng hơn đáng kể
- Tách các magic number hardcode thành macro và hàm riêng để tăng khả năng bảo trì
- Chỉnh sửa danh sách đường cong DTLS, tên hồ sơ SRTP để phù hợp với chuẩn của FFmpeg và OpenSSL
- Cập nhật ICE STUN magic number, RTP payload type để khớp với tiêu chuẩn của trình duyệt Chrome
- Giải quyết các vấn đề xử lý media như kích thước khung âm thanh, chuyển đổi H.264 MP4→AnnexB, timestamp OPUS
- Logic bắt tay DTLS và xử lý ICE được hợp nhất vào một hàm duy nhất, giúp dễ quản lý hơn
- Điều kiện hỗ trợ DTLS dựa trên OpenSSL được làm rõ, cải thiện lỗi build và khả năng tương thích
- Hợp nhất cấu trúc nội bộ TLS/DTLS như SRTP, callback BIO, khởi tạo khóa/chứng chỉ CA
- Thay đổi và bổ sung mới tổng cộng 13 tệp, bao gồm cả tệp
whip.c
Bối cảnh và ý nghĩa
- WHIP là giao thức chuẩn dựa trên HTTP để phát luồng bằng WebRTC, rất quan trọng với phát sóng trực tiếp siêu độ trễ thấp
- Trước đây, việc mã hóa và phát WebRTC trong FFmpeg cần công cụ riêng hoặc hệ thống relay phức tạp, nhưng với lần hợp nhất này, có thể phát WHIP bằng một lệnh FFmpeg duy nhất
- Đây là bước ngoặt kỹ thuật giúp kết nối trực tiếp với hệ sinh thái WebRTC hiện đại trong nhiều lĩnh vực như phát sóng thời gian thực, live commerce, hội nghị truyền hình
1 bình luận
Ý kiến trên Hacker News
--without-whipđể loại hẳn khỏi bản build nếu không muốn dùng, như vậy sẽ là tốt nhất./configure--enable-muxer=whipvà--enable-openssl