FFmpeg में "समान" या "same_quant" विकल्प क्या है? क्या इसका मतलब है "समान गुणवत्ता"?


29

sameqउदाहरण के लिए, उदाहरण के लिए, मैंने FFmpeg कमांड का उपयोग करते हुए देखा है

ffmpeg -i input.mp4 -sameq output.avi

इसका क्या मतलब है? क्या इसका मतलब "समान गुणवत्ता" है? यदि नहीं, तो मुझे इसके बजाय क्या उपयोग करना चाहिए?

जवाबों:


57

sameq "समान गुणवत्ता" का मतलब नहीं है

वेब पर कई संसाधन sameqया same_quantविकल्प के उपयोग को बढ़ावा देते हैं , लेकिन संक्षेप में, वे गलत हैं। प्रयोग sameqआपको इनपुट के समान गुणवत्ता के साथ परिणाम नहीं देता है।
कभी भी, इसका उपयोग न करें।

भ्रम का स्रोत खराब लिखित दस्तावेज था जिसका अर्थ था कि इस विकल्प का उपयोग करने से समान गुणवत्ता मिलेगी। सौभाग्य से, विकल्प हटा दिया गया है।

यहाँ FFmpeg प्रलेखन क्या कहा गया है:

ध्यान दें कि यह समान गुणवत्ता नहीं है। इस विकल्प का उपयोग तब तक न करें जब तक आपको पता हो कि आपको इसकी आवश्यकता है।

वास्तव में FFmpeg डेवलपर्स था नाम बदल से sameqकरने के लिए same_quantबस सुनिश्चित करने के लिए, और फिर हटा दिया sameq/same_quant पूरी तरह; इसका अर्थ है कि यह विकल्प हाल के FFmpeg में मौजूद नहीं है, लेकिन पुराने FFmpeg बिल्ड का उपयोग करने वालों के लिए यह लेख अभी भी उपयोगी है।


वीडियो संपीड़न कैसे काम करता है?

अब जब हमने इसे मंजूरी दे दी है, तो कुछ तकनीकी विवरणों पर चलते हैं।

यह समझने के लिए कि यह मज़बूती से काम क्यों नहीं करता है, हमें एक आम वीडियो एनकोडर के लिए "गुणवत्ता" के अर्थ की अवधारणा को समझने की आवश्यकता है और गुणवत्ता को प्रभावित करता है। अलग-अलग बिट दरों के साथ संकुचित होने पर एक वीडियो दूसरे से बेहतर क्यों दिखता है? रूपांतरण हानिपूर्ण बनाता है और एन्कोडिंग के बाद वीडियो मूल से छोटा क्यों है?

जब आप वीडियो को एन्कोड करते हैं, तो आपके इनपुट डेटा को पहले पिक्सेल के ब्लॉक में गणितीय परिवर्तन लागू करके एक अलग आयाम में परिवर्तित किया जाता है। यह परिवर्तन, ज्यादातर एक असतत कोसाइन ट्रांसफ़ॉर्म , संख्याओं का एक मैट्रिक्स पैदा करता है जो वर्णन करते हैं, मान लीजिए, वीडियो में 8 × 8 पिक्सेल का एक क्षेत्र।

तो, आपका 8 × 8 पिक्सल और संबंधित मैट्रिक्स शुरू में इस तरह दिखेगा: 1

मूल छवि  

लेकिन यह बहुत अधिक डेटा है! यदि हम वीडियो को संपीड़ित करना चाहते हैं, तो हम वास्तव में नीचे दाईं ओर की संख्याओं से छुटकारा पा सकते हैं। मैं यह नहीं समझाऊंगा कि यह वास्तव में क्यों है, लेकिन चलो यह कहते हैं कि इस तरह के ब्लॉक का वर्णन करते समय शीर्ष बाईं ओर की संख्या अधिक महत्वपूर्ण है। परिवर्तन का पूरा विचार मूल रूप से महत्वपूर्ण सामान को बाईं ओर रखना है।

नीचे की ओर संख्याओं को हटाने के लिए हम उन्हें शून्य बना सकते हैं। अगर कुछ "कुछ नहीं" है, या सिर्फ 0एस के रूप में दोहरा रहा है , तो हमें इसे स्टोर नहीं करना पड़ेगा, और इस तरह हम अंतरिक्ष को बचाएंगे। गणितीय रूप से, हमें दूसरे मैट्रिक्स, एक "क्वांटिज़ेशन मैट्रिक्स" को लागू करके इस पहले मैट्रिक्स को निर्धारित करना होगा।

इसके परिणामस्वरूप एक मैट्रिक्स होगा जो अब इसमें काफी कम संख्या में है, और बहुत सारे शून्य हैं:

संकुचित छवि  

इसका नतीजा यह है कि हमने पहले, उच्च गुणवत्ता वाले मैट्रिक्स को बहुत सारी संख्याओं के साथ मैट्रिक्स में बदल दिया, जो अभी भी उसी 8 × 8 पिक्सल जैसा दिखता है, लेकिन कम गुणवत्ता के साथ क्योंकि इसमें उन पिक्सल का वर्णन करने के लिए कम संख्या है। यदि आप ब्लॉक की तुलना नेत्रहीन करते हैं, तो वे समान हैं, लेकिन अब समान नहीं हैं।

यहां, परिमाणीकरण मैट्रिक्स गुणवत्ता निर्धारित करता है । यह महत्वपूर्ण है। हम विभिन्न गुणवत्ता के लिए अलग-अलग मात्रा का उपयोग कर सकते हैं। कुछ परिमाणीकरण मैट्रिक्स मूल मैट्रिक्स को लगभग बरकरार रखते हैं, अन्य नहीं। हम जितनी अधिक संख्या निकालेंगे, गुणवत्ता उतनी ही खराब होगी, लेकिन जितना अधिक हम वीडियो को कंप्रेस कर सकते हैं, क्योंकि हम मूल रूप से यहां के जीरो को "फेंक" सकते हैं।

इससे क्या लेना-देना है sameq?

मान लें कि आप एक वीडियो को एन्कोड करते हैं और आप एक निश्चित गुणवत्ता सेट करना चाहते हैं। जैसा कि हमने पहले से ही सीखा है, विभिन्न परिमाणीकरण मैट्रिक्स अलग-अलग गुणवत्ता का नेतृत्व करते हैं, इसलिए जब हम गुणवत्ता का उपयोग करने के लिए अपने एनकोडर को बताते हैं, तो xयह yउस गुणवत्ता को प्राप्त करने के लिए उपयुक्त परिमाणीकरण मैट्रिक्स का चयन करेगा , चाहे वह कुछ भी हो। परिणाम एक वीडियो है जो yमैट्रिक्स का उपयोग करके संकुचित किया गया था । 2

और यहां दिलचस्प हिस्सा है: sameqइसका मतलब "समान मात्रा में" है। "समान गुणवत्ता" नहीं। यदि आपके पास FFmpeg का कोई गैर-हालिया संस्करण है, तो आप इसे अभी भी पा सकते हैं ffmpeg --help:

ffmpeg --help 2>&1 | grep sameq

इसलिए, जब आप अब उस परिवर्तित वीडियो को लेते हैं और उसे फिर से एनकोड करते हैं, और आप sameqविकल्प को लागू करते हैं , FFmpeg होगा, बस बोल रहा है, उसी क्वांटिज़ेशन मैट्रेस का चयन करें जो इनपुट वीडियो के लिए उपयोग किया गया था।

यह कुछ हद तक तब काम करता है जब आप इनपुट और आउटपुट के लिए एक ही कोडेक का उपयोग करते हैं, उदाहरण के लिए जब एक XviD वीडियो से XviD वीडियो में परिवर्तित किया जाता है, लेकिन आप अभी भी खराब गुणवत्ता के साथ समाप्त हो जाएंगे। 3 यह कुछ है जो पहले से ही इनकोड किया गया है एन्कोडिंग एन्कोडिंग है और भी अधिक जानकारी फेंक देंगे। ऊपर दिए गए उदाहरण में, हम अपने मैट्रिक्स में और भी अधिक शून्य बनाएंगे और परिणाम बदतर दिखाई देगा।

यह अलग-अलग वीडियो कोडेक्स पर काम नहीं करता है । कहते हैं कि आप एक XviD- एन्कोडेड वीडियो को x264 के साथ परिवर्तित कर रहे हैं। 4 इन दो कोडेक्स के लिए, आंतरिक रूप से उपयोग किए जाने वाले परिमाणीकरण मैट्रिक्स अलग-अलग हैं - उनके पास समान गुणांक नहीं हैं। तो यह विकल्प भी समझ में नहीं आता है! दुर्भाग्य से, FFmpeg अभी भी आपको इसका उपयोग करने की अनुमति देता है।

नीचे पंक्ति: कृपया उस विकल्प का उपयोग न करें जब तक कि आप विशेष रूप से यह नहीं जानते कि आप क्या कर रहे हैं। यदि आप अपने वीडियो को एक अलग कोडेक के साथ एन्कोड करना चाहते हैं, लेकिन गुणवत्ता को बनाए रखें, तो आपको प्रयोग करना होगा और बस गुणवत्ता को स्वयं निर्धारित करना होगा। देखें कि क्या परिणाम संतोषजनक है, और यदि नहीं, तो उच्च गुणवत्ता निर्धारित करें। जितना आप कर सकते हैं उतना ही है।

अंत में, यदि आप पुन: एन्कोडिंग करते समय अपनी गुणवत्ता को बनाए रखने के तरीके के बारे में पढ़ना चाहते हैं, तो इन पोस्टों को देखें:


1) मैट्रिक्स यहाँ छवि के अनुरूप नहीं है, वास्तव में। यह सिर्फ एक उदाहरण है।
2) वास्तव में, इन दिनों, अधिकांश एन्कोडिंग प्रक्रियाएं केवल एक मैट्रिक्स का उपयोग नहीं करती हैं । जब आप एक निश्चित बिट दर निर्धारित करते हैं, तो एनकोडर विभिन्न मेट्रिसेस का उपयोग करेगा प्रति बिट औसत दर प्राप्त करने के लिए। इसी तरह, एक निश्चित गुणवत्ता निर्धारित करते समय, आधुनिक एन्कोडर सामग्री के आधार पर अलग-अलग मैट्रिक्स को नियोजित करते हैं। ऐसा इसलिए है क्योंकि कुछ सामग्री दूसरों की तुलना में संपीड़ित करने के लिए "आसान" हैं और समान संपीड़न कारक प्राप्त करने के लिए कम मात्राकरण की आवश्यकता होती है।
3) उदाहरण ffmpeg -i input.avi -sameq -c:v libxvid output.avi:। इसका उपयोग न करें। कृप्या।
4) उदाहरण ffmpeg -i input.avi -sameq -c:v libx264 output.mp4:। इस का उपयोग न करें। मैं गंभीर हूँ।


-sameqविकल्प को पदावनत कर दिया गया है और फिर avconv से हटा दिया गया है
AzizSM
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.