2 पॉइंट द्वारा GN⁺ 2023-12-13 | 1 टिप्पणियां | WhatsApp पर शेयर करें

FFmpeg CLI मल्टीथ्रेडिंग समर्थन

  • FFmpeg command-line interface (CLI) को मल्टीथ्रेडिंग सपोर्ट देने वाला फीचर FFmpeg Git में merge कर दिया गया है.
  • यह बदलाव FFmpeg 7.0 के अगले साल की शुरुआत में रिलीज़ होने से पहले किया गया है, और वीडियो transcoding में व्यापक रूप से इस्तेमाल होने वाले इस महत्वपूर्ण open source प्रोजेक्ट के लिए एक बड़ा सुधार है.
  • आज जब multi-core processors आम हो चुके हैं, यह सुधार बहुत लाभकारी है.

जटिल रिफैक्टरिंग का काम

  • FFmpeg डेवलपर्स ने हाल की तकनीकी घोषणा में इस मल्टीथ्रेडिंग कार्य को "दशकों में FFmpeg CLI में किए गए सबसे जटिल रिफैक्टरिंग में से एक" बताया.
  • डेवलपर्स ने उपयोगकर्ताओं से परीक्षण करने का अनुरोध किया है और पाया गया कोई भी मुद्दा FFmpeg Trac पर रिपोर्ट करने को कहा है.

लागू किए गए तकनीकी बदलाव

  • merge किए गए patch में thread-aware transcode scheduling infrastructure जोड़ना, encoding को अलग thread में ले जाना, और इसके अलावा कई low-level बदलाव शामिल हैं.
  • FFmpeg को thread architecture में बदलने का मतलब है कि हर component (demuxer, decoder, filter, encoder, muxer) पहले से अलग thread में चल रहा था, लेकिन अब वे वास्तव में parallel में चल सकेंगे.

GN⁺ की राय

  • FFmpeg का मल्टीथ्रेडिंग समर्थन वीडियो transcoding कार्यों की दक्षता को काफी बेहतर बना सकने वाला एक महत्वपूर्ण विकास है.
  • यह जटिल रिफैक्टरिंग डेवलपर्स के लिए कई चुनौतियाँ लेकर आई, और यह दिखाती है कि FFmpeg लगातार आधुनिक computing environment के अनुसार खुद को ढालते हुए आगे बढ़ रहा है.
  • उपयोगकर्ताओं और डेवलपर्स के लिए यह देखना दिलचस्प होगा कि यह बदलाव वास्तविक प्रदर्शन पर क्या असर डालता है.

1 टिप्पणियां

 
GN⁺ 2023-12-13
Hacker News राय
  • मल्टीथ्रेडिंग/प्रोसेसिंग ऑप्टिमाइज़ेशन पर सिद्धांत

    • पहले एक इमेज को पढ़ने, प्रोसेस करने और रेंडर करने में काफ़ी समय लगता था, लेकिन हार्डवेयर और सॉफ़्टवेयर तकनीक में प्रगति के कारण अब यह बहुत तेज़ हो गया है.
    • पहले कई वर्कर्स द्वारा एक फ़्रेम को प्रोसेस करना प्रभावी था, लेकिन अब एक सिंगल वर्कर कई वर्कर्स को लगाकर प्रोसेस करने की तुलना में फ़्रेम को अधिक कुशलता से संभाल सकता है.
    • आधुनिक सिस्टम उस माहौल से पूरी तरह अलग हैं जिसमें FFmpeg पहली बार बनाया गया था, इसलिए वर्कलोड को कैसे परिभाषित किया जाए, शेड्यूल किया जाए, बाँटा जाए, ट्रैक किया जाए और फिर अंतिम परिणाम में जोड़ा जाए, इस पर फिर से सोचने की ज़रूरत है.
    • FFmpeg टीम ने इस चुनौती को स्वीकार किया, इसके लिए उनकी सराहना की गई. FFmpeg open source इन्फ्रास्ट्रक्चर की चोटी पर है और सभ्यता के निर्माण के लिए एक आवश्यक तत्व है.
  • VDD@Dublin इवेंट की टॉक रिकॉर्डिंग

    • टॉक की रिकॉर्डिंग खोजी जा रही थी, लेकिन लेखक की साइट या यहाँ पर इसे आसानी से नहीं पाया जा सका.
    • अपडेट: यह YouTube पर मिल गई!
  • मल्टीकोर परफ़ॉर्मेंस सुधार को लेकर विचार

    • मौजूदा encoders एक ही फ़्रेम को एक साथ प्रोसेस करने के लिए कई threads का उपयोग करते हैं. आम तौर पर फ़्रेम को कई क्षेत्रों में बाँट दिया जाता है और हर thread एक खास क्षेत्र को प्रोसेस करता है.
    • एक विकल्प के रूप में key frame segments को स्वतंत्र रूप से प्रोसेस करने का सुझाव दिया गया. यह तरीका codecs को एक सामान्य और कुशल तरीके से parallelize कर सकता है, और फ़्रेम को क्षेत्रों में बाँटने से होने वाली compression efficiency की गिरावट या threads के बीच communication overhead से बचाता है.
    • इस तरीके की समस्या यह है कि memory में N*key frame period जितने फ़्रेम लोड करने पड़ेंगे, और N फ़्रेम encode करने के लिए अतिरिक्त memory overhead भी होगा.
    • लेकिन कई मामलों में ये समस्याएँ बहुत बड़ी नहीं होंगी. ज़्यादातर स्थितियों में लोग अधिक RAM उपयोग करने और fixed key frame interval के साथ output देने से संतुष्ट होंगे.
    • फ़्रेम-आधारित parallel processing और key frame segment parallel processing को मिलाकर उच्च स्तर की parallelism हासिल की जा सकती है, जबकि quality loss को न्यूनतम रखा जा सकता है.
  • लगातार rebase करने की चुनौती

    • हर दिन आने वाले बदलावों पर लगातार rebase करना काफ़ी चुनौतीपूर्ण था.
    • अब जब यह FFmpeg में merge हो गया है, तो आगे काम काफ़ी आसान हो जाएगा.
    • यह एक बड़ी जीत है, और इससे speed improvement में काफ़ी मदद मिलेगी.
  • FFmpeg के virtual display buffer streaming startup time में सुधार की उम्मीद

    • LLMStack प्रोजेक्ट में browser video को stream करने के लिए FFmpeg का उपयोग किया जाता है.
    • अभी हर बार टूल कॉल पर pipeline को boot करने में ध्यान देने योग्य latency होती है.
    • FFmpeg में यह सुधार ऐसे optimization कामों में निश्चित रूप से मदद करेगा.
  • FFmpeg C API कोर्स का प्रचार

    • Udemy पर FFmpeg C API सिखाने वाले एक कोर्स का प्रचार किया गया.
  • FFmpeg codebase को लेकर जिज्ञासा

    • FFmpeg codebase के बारे में ज़्यादा जानकारी नहीं है, लेकिन यह जिज्ञासा है कि इतना बड़ा commit किए बिना बदलाव धीरे-धीरे कैसे आगे बढ़ाए जा सकते हैं.
    • प्रस्तुति के अनुसार 700 commits थे; यह जानने की उत्सुकता है कि क्या ये एक अलग branch में थे, या धीरे-धीरे प्रोजेक्ट में merge किए गए.
  • cloud service operator का दृष्टिकोण

    • अगर आप Netflix जैसी cloud service चलाते हैं, तो आप पहले से ही हर मशीन पर हज़ारों FFmpeg processes चला रहे होते हैं, इसलिए मूल रूप से यह पहले से ही multi-core काम है.
  • VapourSynth में threaded filter processing के अनुभव साझा करना

    • लगभग 10 साल से VapourSynth में threaded filter processing का आनंद लिया जा रहा है.
    • FFmpeg का यह सुधार भी शानदार है, लेकिन 'quality' video encoding के लिए VapourSynth preprocessing + av1an encoding workflow में इससे शायद कोई बड़ा बदलाव नहीं आएगा.
  • FFmpeg के multi-core support पर सवाल

    • यह जानने की जिज्ञासा है कि क्या FFmpeg अब अपने सभी शामिल codecs में multi-core का उपयोग कर पाएगा.
    • audio hosting service के लिए FFmpeg से LAME का उपयोग करके MP3 encode किया जाता है, इसलिए अगर लंबे फ़ाइलों की encoding time कम हो सके तो यह बहुत अच्छा होगा.