- FFmpeg
avformat/whipमें WHIP muxer जुड़ने से WebRTC आधारित 1 सेकंड से कम latency वाली streaming को FFmpeg के भीतर संभालना संभव हो गया - बदलाव का आधार WHIP Version 3 है, और muxer के नाम व implementation के साथ-साथ SSL·DTLS·RTC log context और error messages को भी व्यवस्थित किया गया
- implementation के अंदर के magic numbers को macros और functions से बदला गया, और DTLS curve list·SRTP profile·ICE STUN magic number·RTP payload type handling को भी बेहतर किया गया
- media path में fixed frame size के बजाय
rtc->audio_par->frame_sizeका इस्तेमाल किया गया, और MP4/ISOM input को Annex B में बदलने के लिए h264_mp4toannexb का उपयोग किया गया - build configuration बदली गई है ताकि
whipसिर्फ DTLS enabled होने पर चालू हो, और मौजूदा support OpenSSL तक सीमित है
WHIP muxer जोड़ना और build से जोड़ना
avformat/whipमें WHIP muxer जोड़ा गया है, जो 1 सेकंड से कम latency वाली streaming को support करता है- implementation का आधार WHIP Version 3 है
- नए implementation file के रूप में libavformat/whip.c जोड़ा गया
- documentation और build configuration भी साथ में बदले गए
DTLS·ICE·RTP handling की सफाई
- WHIP muxer में नाम बदलने के साथ implementation को सुधारा गया, और SSL·DTLS·RTC error messages व log context बेहतर किए गए
- magic numbers को macros से बदला गया और कुछ logic को functions में अलग किया गया
- log level को भी अधिक स्पष्ट रूप से adjust किया गया
- DTLS path में compatibility और performance से जुड़े कई बदलाव शामिल किए गए
- DTLS curve list update की गई
- FFmpeg और OpenSSL के लिए SRTP profile names को refined किया गया
- performance सुधार के लिए DTLS handshake और ICE handling को optimize किया गया
- ARQ से बचने के लिए single handshake timeout और server role का इस्तेमाल किया गया
- ICE handling को request/response और DTLS handshake को एक single function में integrate करने की दिशा में व्यवस्थित किया गया
- ICE STUN magic number को refined किया गया
- RTP payload type को Chrome definition के आधार पर update किया गया
Media handling और OpenSSL constraints
- audio side का fixed frame size बदलकर
rtc->audio_par->frame_sizeका उपयोग किया गया - MP4/ISOM input को Annex B में convert करने के लिए
h264_mp4toannexbका इस्तेमाल किया गया - OPUS timestamp issue और BSF use के बाद marker setting भी साथ में fix की गई
- TLS और DTLS implementations को common structure में मिला दिया गया
- BIO callback, read, write,
print_ssl_error,openssl_init_ca_key_cert,init_bio_methodshare किए जाते हैं - वही data structure इस्तेमाल होता है
- BIO callback, read, write,
- OpenSSL build error fix किया गया ताकि यह Pion के साथ काम कर सके
configureबदला गया है ताकिdtlsenabled होने पर हीwhipचालू हो- मौजूदा support target OpenSSL है
1 टिप्पणियां
Hacker News की राय
WebRTC broadcasting को लेकर सच में उत्साहित हूं। इसके कारण Broadcast Box README और OBS PR में लिख रखे हैं
अब GStreamer, OBS और FFmpeg तीनों WHIP को support करते हैं, तो mobile, web, embedded और broadcasting software जैसे सभी platforms पर इस्तेमाल किया जा सकने वाला एक universal video broadcasting protocol मिल गया है
open source और WebRTC broadcasting पर कई सालों से काम कर रहा हूं, और इसे एक बड़ा milestone मानता हूं
[0] https://github.com/Glimesh/broadcast-box?tab=readme-ov-file#...
[1] https://github.com/obsproject/obs-studio/pull/7926
यह SCTP वाला हिस्सा नहीं है। असल में यह WebRTC-HTTP Ingestion Protocol, यानी WHIP, का implementation है—एक low-latency HTTP protocol जो peer और WebRTC के SCTP-based protocol से communicate करने वाले gateway से जुड़ने के लिए है
https://www.ietf.org/archive/id/draft-ietf-wish-whip-01.html
उम्मीद है कि कभी SCTP की जगह QUIC या WebTransport-based P2P protocol पर जा सकेंगे। QUIC मौजूदा UDP के ऊपर SCTP का काम अच्छी तरह संभालता है, और complexity व implementation differences को बहुत ज्यादा नहीं बढ़ाता
candidates में से एक Media-over-QUIC(MoQ) है, लेकिन browsers में P2P QUIC नहीं है और उस तरफ progress भी कई सालों से रुकी हुई है
https://quic.video/ https://datatracker.ietf.org/group/moq/about/
ज्यादातर WHIP providers DataChannel भी support करते हैं, लेकिन यह अभी standardized नहीं है
जानना चाहता हूं कि इसका मतलब क्या है। क्या इसका मतलब है कि कोई website सीधे FFmpeg instance से connect करके audio या video stream ले सकती है?
Phoronix की explanation थोड़ी ज्यादा detailed है: https://www.phoronix.com/news/FFmpeg-Lands-WHIP-Muxer
इससे self-hosted streams या streaming CDN बनाना काफी आसान हो सकता है
FFmpeg, अगर इस्तेमाल करना आता हो, तो सचमुच कमाल का standalone और plug-and-play media software है
self-hosting और WebRTC को बहुत आसान बनाना चाहता था, इसलिए https://github.com/Glimesh/broadcast-box बनाया
XMPP client Gajim काफी समय से इसका इंतजार कर रहा था। audio/video call feature लगभग छोड़ा हुआ था, और FFmpeg की वजह से इसे फिर से जोड़ना आसान हो जाए—इसी का धैर्य से इंतजार किया जा रहा था
अब सब कुछ closed gardens या app-specific services बन गया है
Anubis graphics अचानक दिख जाएं तो अच्छा लगता है। अब तक इन्हें ffmpeg और gnu वगैरह में देखा है
उम्मीद है कि इसकी वजह से system पर ffmpeg रखना और risky न हो जाए। WebRTC security vulnerabilities कई compromises की वजह रही हैं, और browser install करते ही जिन features को सबसे पहले बंद करता हूं उनमें से एक यही है
यह implementation बहुत छोटा है, और मुझे 100% भरोसा है कि हम users को जितना संभव हो उतना best दे रहे हैं
--without-whipजैसे argument से इसे build से निकाल सकते हैं? वही ideal होगाffmpeg और dependencies वाली Docker image बनाकर, हर conversion task के लिए
docker runचलाना बेहतर है। अगर images या document thumbnails भी बनाने हैं तो ClamAV, OpenOffice, ImageMagick भी साथ डाल सकते हैंमेरी राय में, user-generated files को सिर्फ receive और serve करने से आगे processing करने वाले servers को अलग, मजबूती से locked-down VLAN में रखना चाहिए; AWS हो तो Security Group में
यह बताए गए projects पर अज्ञानतापूर्ण हमला नहीं है। security कठिन है, खासकर जब लंबे समय से जमा हुए और कभी-कभी संदिग्ध तरीके से reverse-engineered binary formats से dealing हो। 4chan की तरह नुकसान उठाने से पहले इसे मान लेना समझदारी है
[1] https://ffmpeg.org/security.html
बहुत बढ़िया। मैं web-based remote control बना रहा हूं, और अगर इससे
ffmpeg gdigrabको WebRTC stream में बदलकर client को अभी वाले ExpressJS workaround के बिना सीधे consume करने दिया जा सके, तो काफी संतुष्टि होगीiOS Safari पर bot detection से लगातार block होना दिलचस्प है। company WiFi और cellular data, दोनों पर ऐसा हो रहा है
काश Anubis मुझे अंदर जाने दे
"access denied"page दिखता है, या challenge infinite loop में चलता रहता है?Anubis pass ही नहीं करने दे रहा ;(