• Meta हर दिन अरबों बार FFmpeg चलाता है, और उसने internal fork version की जगह upstream FFmpeg पर पूरी तरह शिफ्ट होने में सफलता पाई
  • internal fork और open source version के बीच फीचर गैप को खत्म करने के लिए FFlabs और VideoLAN के साथ मिलकर multi-lane parallel encoding और real-time quality metrics फीचर upstream में लागू किए
  • हर दिन 1 अरब से अधिक video uploads को प्रोसेस करते हुए DASH playback के लिए multi-resolution और multi-codec encoding एक ही FFmpeg command line से की जाती है
  • FFmpeg 6.0~8.0 में लागू की गई efficient threading architecture Meta के डिज़ाइन पर आधारित है और सभी users को बेहतर encoding efficiency देती है
  • Meta के खुद के डिज़ाइन किए हुए ASIC MSVP(Meta Scalable Video Processor) को FFmpeg के standard hardware API के जरिए integrate किया गया, जिससे software और hardware pipelines के बीच consistency बनी रही
  • 25 साल से अधिक समय से विकसित हो रहे FFmpeg में लगातार निवेश के जरिए Meta platform पर नए video experiences और reliability दोनों को मजबूत किया गया

FFmpeg की भूमिका और Meta की चुनौतियाँ

  • FFmpeg विभिन्न audio और video codecs तथा container formats को सपोर्ट करने वाला industry-standard media processing tool है, जो complex filter chains के जरिए media editing और conversion को संभव बनाता है
  • Meta हर दिन ffmpeg (main CLI) और ffprobe (media file properties देखने वाली utility) binaries को अरबों बार चलाता है, और उसकी ज़रूरतें individual file processing से आगे जाती हैं
  • लंबे समय तक internal fork पर निर्भर रहते हुए उसने thread-based multi-lane encoding और real-time quality metric calculation जैसे उस समय upstream में मौजूद नहीं थे, ऐसे फीचर खुद विकसित किए

internal fork का अलग हो जाना और upstream में वापसी की ज़रूरत

  • internal fork, upstream FFmpeg से काफी अलग हो गया, जिससे feature set का अंतर धीरे-धीरे बढ़ता गया
  • इसी दौरान FFmpeg के नए versions ने नए codecs, file format support और stability improvements दिए, इसलिए users द्वारा अपलोड किए जाने वाले तरह-तरह के video content को बिना रुकावट संभालने के लिए open source के latest version को भी साथ में सपोर्ट करना ज़रूरी हो गया
  • internal changes को rebase करते समय regression रोकना मुश्किल होता गया, इसलिए FFmpeg developers, FFlabs और VideoLAN के साथ मिलकर internal fork को पूरी तरह हटाकर सिर्फ upstream version इस्तेमाल करने की दिशा में बदलाव किया गया

efficient multi-lane transcoding बनाना (VOD और live streaming)

  • जब users video upload करते हैं, तो DASH(Dynamic Adaptive Streaming over HTTP) playback के लिए कई encoding sets बनाए जाते हैं, जिनमें resolution, codec, frame rate और quality level अलग-अलग होते हैं
    • app का video player network conditions जैसे signals के आधार पर इन encodings के बीच real time में switch कर सकता है
  • सबसे आसान तरीका यह है कि हर lane को अलग FFmpeg command line से क्रमवार प्रोसेस किया जाए, लेकिन parallel execution में भी हर process दोहराया हुआ काम करता है, जैसे decoding को बार-बार करना और process startup overhead
  • अगर एक ही FFmpeg command line में frames को सिर्फ एक बार decode करके हर output encoder तक भेजा जाए, तो duplicate decoding हटाई जा सकती है और process startup overhead भी कम होता है
    • हर दिन 1 अरब से अधिक video uploads प्रोसेस होने के कारण, प्रति process बची computation कुल मिलाकर बहुत बड़ा efficiency gain देती है
  • Meta का internal fork parallel video encoding optimization भी देता था: पहले FFmpeg कई encoders होने पर उन्हें frame-by-frame serial रूप से चलाता था, लेकिन Meta ने सभी encoder instances को parallel में चलाकर ज्यादा parallelism हासिल किया
  • FFmpeg developers (FFlabs और VideoLAN सहित) के योगदान से FFmpeg 6.0 से ज्यादा efficient threading लागू होना शुरू हुआ और 8.0 में पूरा हुआ
    • यह सीधे Meta के internal fork के डिज़ाइन से प्रभावित था, और इसे दशकों में FFmpeg का सबसे जटिल refactoring माना गया
    • इससे सभी FFmpeg users को ज्यादा efficient encoding का लाभ मिला

real-time quality metrics (live streaming)

  • visual quality metrics, media की perceptual quality को संख्यात्मक रूप में व्यक्त करते हैं, ताकि compression के कारण होने वाले quality loss को मापा जा सके
    • reference metrics: original encoding और distorted encoding की तुलना करते हैं
    • no-reference metrics: बिना original के quality का आकलन करते हैं
  • FFmpeg में PSNR, SSIM, VMAF जैसे quality metrics दो मौजूदा encodings का उपयोग करके encoding पूरा होने के बाद अलग command line से निकाले जा सकते हैं, लेकिन live streaming में इन्हें real time में निकालना ज़रूरी होता है
  • हर output lane के video encoder के बाद video decoder insert करके compression के बाद वाले frame bitmaps हासिल किए जाते हैं, और उन्हें compression से पहले वाले frames से तुलना करके एक ही FFmpeg command line में हर encoding lane के quality metrics real time में निकाले जाते हैं
  • FFmpeg 7.0 से FFlabs और VideoLAN developers के योगदान के जरिए "in-loop" decoding सक्षम हुआ, जिससे इस फीचर के लिए internal fork पर निर्भरता पूरी तरह खत्म हो गई

upstream contribution के मानदंड और internal-only patches

  • real-time quality metrics और efficient threading जैसे फीचर्स Meta के भीतर और बाहर मौजूद विभिन्न FFmpeg-based pipelines को efficiency लाभ देते हैं, इसलिए इन्हें upstream में contribute किया गया
  • दूसरी ओर, जो patches Meta infrastructure के लिए बहुत ज्यादा specialized हैं और जिन्हें सामान्य रूप से लागू करना मुश्किल है, उन्हें सिर्फ internal रूप में रखा गया
  • FFmpeg, NVIDIA NVDEC/NVENC, AMD UVD, Intel QSV जैसे hardware-accelerated decoding, encoding और filtering को standard API के जरिए सपोर्ट करता है
  • Meta के अपने video transcoding ASIC MSVP(Meta Scalable Video Processor) के लिए भी इसी standard API के जरिए support जोड़ा गया, जिससे अलग-अलग hardware platforms पर common tools इस्तेमाल किए जा सकें
    • MSVP सिर्फ Meta के internal infrastructure में इस्तेमाल होता है, इसलिए external FFmpeg developers के पास इसे test या validate करने के लिए hardware access नहीं है; इसी वजह से इसे internal patch के रूप में रखा गया
    • latest FFmpeg versions पर rebase करते समय व्यापक validation के जरिए robustness और accuracy सुनिश्चित की गई

FFmpeg में लगातार निवेश

  • multi-lane encoding और real-time quality metrics फीचर्स के जरिए सभी VOD और live streaming pipelines में internal fork पूरी तरह हटाया गया
  • FFmpeg के standard hardware API की वजह से MSVP ASIC और software-based pipelines को न्यूनतम friction के साथ साथ में सपोर्ट किया जा सका
  • 25 साल से अधिक समय से सक्रिय रूप से विकसित हो रहे FFmpeg में open source developers के साथ partnership के जरिए लगातार निवेश जारी रखने की योजना है, जिससे Meta, industry और users सभी को लाभ मिलेगा

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.