3 पॉइंट द्वारा GN⁺ 2025-06-05 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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_method share किए जाते हैं
    • वही data structure इस्तेमाल होता है
  • OpenSSL build error fix किया गया ताकि यह Pion के साथ काम कर सके
  • configure बदला गया है ताकि dtls enabled होने पर ही whip चालू हो
    • मौजूदा support target OpenSSL है

1 टिप्पणियां

 
GN⁺ 2025-06-05
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

    • events broadcasting क्षेत्र में काम करने के नाते, इस बदलाव से OBS vMix जैसे professional software का practical alternative बन सकता है। खासकर P2P support और कई scenes broadcast करने की क्षमता बहुत valuable लगती है
    • जानना चाहूंगा कि क्या WebRTC stream play कर सकने वाला कोई video player है। पिछली बार check किया था, तब VLC या दूसरे popular tools अभी इसे support नहीं करते थे
  • यह 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/

    • सोच रहा हूं कि SCTP वाले हिस्से को कैसे expose और use करना अच्छा होगा। WHIP IETF draft में इसके बारे में कोई mention या proposal नहीं दिखता
      ज्यादातर WHIP providers DataChannel भी support करते हैं, लेकिन यह अभी standardized नहीं है
  • जानना चाहता हूं कि इसका मतलब क्या है। क्या इसका मतलब है कि कोई website सीधे FFmpeg instance से connect करके audio या video stream ले सकती है?
    Phoronix की explanation थोड़ी ज्यादा detailed है: https://www.phoronix.com/news/FFmpeg-Lands-WHIP-Muxer

    • लगता है इसका मतलब है कि FFmpeg libraries, खासकर libavformat, इस्तेमाल करने वाले programs WebRTC streams receive कर पाएंगे
  • इससे self-hosted streams या streaming CDN बनाना काफी आसान हो सकता है
    FFmpeg, अगर इस्तेमाल करना आता हो, तो सचमुच कमाल का standalone और plug-and-play media software है

    • सच में उत्साहित हूं। खासकर अगर Simulcast भी हो, तो लोगों के लिए बहुत सस्ता और आसान बना सकते हैं
      self-hosting और WebRTC को बहुत आसान बनाना चाहता था, इसलिए https://github.com/Glimesh/broadcast-box बनाया
    • LLM FFmpeg इस्तेमाल करना सच में बहुत अच्छी तरह जानते हैं। लगभग किसी भी video-related task के बारे में पूछो, तो उसके लिए सही ffmpeg one-liner command बना देते हैं
    • बिल्कुल, और यह comic हमेशा याद आती है: https://xkcd.com/2347/
  • XMPP client Gajim काफी समय से इसका इंतजार कर रहा था। audio/video call feature लगभग छोड़ा हुआ था, और FFmpeg की वजह से इसे फिर से जोड़ना आसान हो जाए—इसी का धैर्य से इंतजार किया जा रहा था

    • जानना चाहूंगा कि क्या Gajim और XMPP अभी भी इस्तेमाल होते हैं। पुराने दिनों की याद आती है जब pidgin से chat apps इस्तेमाल करते थे
      अब सब कुछ closed gardens या app-specific services बन गया है
  • Anubis graphics अचानक दिख जाएं तो अच्छा लगता है। अब तक इन्हें ffmpeg और gnu वगैरह में देखा है

    • मुझे भी अच्छा लगता है, लेकिन इस बार अंदर जाने ही नहीं दे रहा
  • उम्मीद है कि इसकी वजह से system पर ffmpeg रखना और risky न हो जाए। WebRTC security vulnerabilities कई compromises की वजह रही हैं, और browser install करते ही जिन features को सबसे पहले बंद करता हूं उनमें से एक यही है

    • जानना चाहूंगा कि कौन-सी security vulnerabilities की बात कर रहे हैं
      यह implementation बहुत छोटा है, और मुझे 100% भरोसा है कि हम users को जितना संभव हो उतना best दे रहे हैं
    • ffmpeg obscure codecs और binary formats को C में handle करने वाला high-performance code है, इसलिए सिर्फ WebRTC की ही चिंता करने की जरूरत नहीं लगती
    • अगर जरूरत न हो या नहीं चाहिए, तो क्या --without-whip जैसे argument से इसे build से निकाल सकते हैं? वही ideal होगा
    • ffmpeg में पहले भी काफी security issues रहे हैं [1], इसलिए user input handle करते समय वैसे भी अच्छी isolation best practice है
      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 में चलता रहता है?
    • क्या आप शायद dual-stack network इस्तेमाल कर रहे हैं?
  • Anubis pass ही नहीं करने दे रहा ;(