चीट शीट और प्रीसेट-सेटिंग जो वास्तव में FFmpeg 1.0 के साथ काम करते हैं?


28

कहीं और उपलब्ध 'चीट शीट' की एक संख्या की कोशिश की है, लेकिन वे लगभग सभी पुराने हैं और बस FFMpeg के नवीनतम संस्करण के साथ काम नहीं करेंगे।

किसी ने मुझे सेटिंग्स को इंगित कर सकते हैं कि नवीनतम FFMpeg के साथ काम करेंगे?

मुझे मुख्य रूप से निम्नलिखित कोडेक्स में दिलचस्पी है

एच .264, निम्न मध्यम और उच्च गुणवत्ता वाले प्रीसेट

साथ ही साथ

PrRes, कम मध्यम और उच्च गुणवत्ता वाले प्रीसेट

जवाबों:


49

FFmpeg में libx264 के लिए पाठ फ़ाइल आधारित प्रीसेट और प्रोफाइल शामिल नहीं हैं, अर्थात आपने -vpreविकल्प के साथ क्या उपयोग किया है । ये मूल्यह्रास किया गया है और हटाया वास्तविक x264 प्रीसेट, प्रोफाइल (और धुनों) के साथ तक पहुँचने के पक्ष में -preset, -profile:vहै, और -tuneविकल्प। पुरानी पाठ फ़ाइलें केवल आधिकारिक x264 प्रीसेट और प्रोफाइल का अनुकरण करती हैं, और कई सीमाओं के कारण पूरी कार्यक्षमता प्रदान नहीं कर सकती हैं जो नई प्रणाली प्रदान करती है। इसे बनाए रखना भी बहुत आसान है।

इसके अतिरिक्त, कई एनकोडर के पास अपने अलग विकल्प हैं; जिसे "निजी विकल्प" भी कहा जाता है। आपको FFmpeg ऑनलाइन प्रलेखन में आम कोडेक्स के ऑडियो और वीडियो एनकोडर विकल्पों पर गौर करना होगा , या ffmpeg -h fullसमर्थित विकल्पों की पूरी सूची के आउटपुट की जांच करनी होगी । उदाहरण के लिए, x264 libx264 AVOptionsपूरी मदद आउटपुट के तहत इसके विकल्पों को सूचीबद्ध करता है ।

यदि आपका ffmpeg समर्थन करता है -presetतो किसी भी पाठ फ़ाइल प्रीसेट का उपयोग नहीं किया जाना चाहिए, और FFmpeg अब कुछ गैर-मानक iPod प्रीसेट के अलावा किसी अन्य के साथ नहीं आता है। यह एक आम गलत धारणा है कि टेक्स्ट प्रीसेट को बस कहीं से भी कॉपी किया जा सकता है और किसी भी ffmpeg के साथ उपयोग किया जा सकता है। यह असत्य है और इसके परिणामस्वरूप टूटना होगा।


मूल रूप से, प्रीसेट ने आपको निम्नलिखित चीजें करने की अनुमति दी है:

नियंत्रण गुणवत्ता

क्वालिटी को या तो बिटरेट के माध्यम से -b:v(वीडियो के लिए) या -b:a(ऑडियो के लिए) निर्दिष्ट करके या किसी अन्य एन्कोडिंग विधि द्वारा निर्दिष्ट किया जाता है, जो कोडेक को समर्थन दे सकता है।

X264 के लिए, विभिन्न एन्कोडिंग विधियां हैं, जिसमें लगातार दर कारक विधि सबसे अधिक परिष्कृत है। यह चर बिटरेट में परिणाम देता है, लेकिन एक एकल पास में समग्र अच्छी गुणवत्ता। सीआरएफ मान 0 से 51 तक होता है, लेकिन समझदार मूल्य आपके स्रोत और आप क्या गुणवत्ता चाहते हैं, इस पर निर्भर करता है कि 19 और 26 के बीच कहीं है। 23 डिफ़ॉल्ट है, इसलिए आप उदाहरण के लिए "उच्च गुणवत्ता" के लिए 18 और "कम गुणवत्ता" के लिए 28 चुन सकते हैं, जो भी आपके लिए इसका मतलब है।

ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4

x264 में अन्य एन्कोडिंग विधियां भी हैं, लेकिन यह यहां के दायरे से बाहर है।

H.264 प्रोफ़ाइल को संकुचित करें

ये प्रोफाइल एक सुविधा निर्धारित करते हैं जो एनकोडर एक निश्चित डिकोडर की क्षमताओं से मेल खाने के लिए उपयोग कर सकता है। हाल के FFmpeg में, प्रोफ़ाइल को निर्दिष्ट करने के लिए निम्नलिखित सिंटैक्स का उपयोग करें, जहाँ प्रोफ़ाइल हो सकती है baseline, mainया high:

ffmpeg -i input.mp4 -c:v libx264 -profile:v baseline output.mp4

अधिक जानकारी के लिए और आपको कब किस प्रोफ़ाइल का उपयोग करना चाहिए, देखें: H.264 प्रोफाइल के बीच क्या अंतर हैं?

एक x264 एन्कोडिंग चुनें preset

ये प्रीसेट एन्कोडिंग गति को प्रभावित करते हैं। एक धीमी पूर्व निर्धारित का उपयोग करने से आपको बेहतर संपीड़न, या गुणवत्ता प्रति फ़ाइलें प्राप्त होती है, जबकि तेज प्रीसेट आपको अधिक खराब संपीड़न देता है। सामान्य तौर पर, आपको बस उस प्रीसेट का उपयोग करना चाहिए जिसे आप इंतजार कर सकते हैं। प्रीसेट हो सकता है ultrafast, superfast, veryfast, faster, fast, medium(डिफ़ॉल्ट), slowऔर veryslow। यहाँ एक उदाहरण है:

ffmpeg -i input.mp4 -c:v libx264 -preset slow output.mp4

दोषरहित वीडियो को एनकोड करें

यह 0 के सीआरएफ को निर्दिष्ट करके संभव है, इसलिए बस उपयोग करें -crf 0:

ffmpeg -i input.mp4 -c:v libx264 -crf 0 output.mp4

अंत में, के बारे में बात करते हैं Prores जल्दी। PrRes या तो एक निश्चित बिटरेट के साथ स्वीकार करता है -b:v, या आप प्रोफ़ाइल को निर्दिष्ट कर सकते हैं, जिसका मूल्य 0 और 3 के बीच होना चाहिए , जहां प्रोफ़ाइल के अनुसार बिट दर चुनी जाती है। उच्चतर साधन बेहतर:

ffmpeg -i input.mp4 -c:v prores -profile:v 0 output.mov

Ffmbc विकी पता चलता है कि प्रोफाइल के नाम इस्तेमाल किया जा सकता है - यह तथापि FFmpeg 1.0 में विफल रहता है।


रूपांतरण विफलता की संभावना को कम करने के लिए मुझे क्या करना चाहिए, यह यादृच्छिक रूप से हो रहा है, कभी-कभी ऐसा नहीं होता है
फ्लाइंगएटॉम

@FeningAtom मैंने अभी तक "रूपांतरण विफल" के बारे में नहीं सुना है। यदि आपके पास एक प्रतिलिपि प्रस्तुत करने योग्य समस्या के साथ एक विशिष्ट प्रश्न है, तो कृपया एक नया प्रश्न पूछें: superuser.com/questions/ask
slhck

यदि आप आपूर्ति की थी तो आप प्रभावी रूप से क्या करेंगे ffmpeg -i input.mp4 -c:v libx264 output.mp4? crf: 23 और पूर्व निर्धारित: मध्यम?
द्राजेन बोजेलोवुक

1
@Drazen हाँ, यह सही है।
slhck


20

मैंने एक परीक्षण किया था जिसमें मैंने .mp4सीआरएफ मान (18, 21, 24, और 27 की एक सीमा पर प्रीसेट वैल्यू (प्लेसबो को छोड़कर) की पूरी श्रृंखला का उपयोग करके सोनी कैमकॉर्डर से एक उच्च गुणवत्ता वाला वीडियो ट्रांस-कोडेड (libx264 एन्कोडिंग का उपयोग करके) किया था। )। मैं जानना चाहता था कि मुझे एन्कोडिंग गति, आउटपुट गुणवत्ता और फ़ाइल आकार का सबसे अच्छा संयोजन क्या देगा।

प्रत्येक CRF मान के लिए, मैंने प्रत्येक ट्रांस-कोड ऑपरेशन को उसके सांकेतिक समय के लिए एक अंक दिया (उदाहरण के लिए, CRF = 18 के लिए, प्रीसेट वैल्यू अल्ट्राफास्ट का समय 5.7 सेकंड का था, स्कोर 1.0 का था, 162 सेकेंड का समय एक 0 को मिला, सभी के साथ। बीच में स्केल किए गए अन्य स्कोर)। मैंने आउटपुट फ़ाइल आकार के अंकों की गणना इसी तरह की, निश्चित रूप से सबसे छोटी फ़ाइल को सर्वश्रेष्ठ स्कोर दिया। फिर मैंने "संयुक्त" गति / आकार स्कोर के लिए दो स्कोर जोड़े।

चार CRF मानों में से प्रत्येक के लिए, "veryfast" पूर्व निर्धारित हाथों में विजेता था, जिसमें लगभग सटीक स्कोर 1.94 (CRF 18 और 21 के लिए), 1.96 (CRF 24) और 1.97 (CRF 27) था। मुझे यह बहुत उत्सुक लगता है कि "veryfast" ने हर बार लगभग सबसे छोटी फ़ाइल आकार का उत्पादन किया , केवल "veryslow" से हार गया और कभी भी अधिक नहीं हुआ।

विभिन्न प्रीसेट मूल्यों के बीच मैंने एक अंतर यह देखा कि ऑपरेटिंग सिस्टम (विंडोज 7) मुझे अलग-अलग थंबनेल देगा। तेज प्रीसेट वीडियो में कई सेकंड का थंबनेल दिखाएगा, जहां धीमे प्रीसेट के लिए थंबनेल वीडियो के शुरुआती फ्रेम को दर्शाएंगे। मेरे लिए यह महत्वपूर्ण नहीं है; जो मैंने सीखा वह यह था कि "-preset veryfast" एक आसान विकल्प लगता है।

यहाँ मेरे परिणाम हैं (एक एक्सेल स्प्रेडशीट की स्नैपशॉट छवि के रूप में):
एक्सेल स्नैपशॉट

यहाँ एक्सेल स्प्रेडशीट को csv टेक्स्ट के रूप में दिया गया है:

CRF,Preset,Seconds,score,MB,score,totalscore
18,1_ultrafast,5.7,1.00,59.5,0.09,1.09
18,2_superfast,8.4,0.98,62.3,0.00,0.98
18,3_veryfast,10.8,0.97,30.9,0.98,1.94
18,4_faster,16.0,0.93,33.5,0.89,1.83
18,5_fast,24.0,0.88,36.8,0.79,1.68
18,6_medium,29.1,0.85,34.9,0.85,1.70
18,7_slow,48.1,0.73,33.9,0.88,1.61
18,8_slower,84.9,0.49,33.0,0.91,1.40
18,9_veryslow,162.0,0.00,30.1,1.00,1.00
21,1_ultrafast,5.7,1.00,38.0,0.00,1.00
21,2_superfast,7.9,0.98,35.0,0.15,1.14
21,3_veryfast,10.0,0.97,19.0,0.97,1.94
21,4_faster,14.2,0.94,21.0,0.87,1.80
21,5_fast,19.9,0.89,23.0,0.77,1.66
21,6_medium,24.6,0.86,22.0,0.82,1.67
21,7_slow,43.1,0.72,21.0,0.87,1.58
21,8_slower,69.8,0.51,20.5,0.89,1.41
21,9_veryslow,137.3,0.00,18.4,1.00,1.00
24,1_ultrafast,5.5,1.00,24.9,0.00,1.00
24,2_superfast,7.5,0.98,21.4,0.27,1.25
24,3_veryfast,9.3,0.97,12.0,0.99,1.96
24,4_faster,13.2,0.93,14.0,0.84,1.77
24,5_fast,17.4,0.90,15.0,0.76,1.66
24,6_medium,21.0,0.87,14.4,0.81,1.67
24,7_slow,37.3,0.72,14.0,0.84,1.56
24,8_slower,62.2,0.51,13.0,0.92,1.42
24,9_veryslow,121.1,0.00,11.9,1.00,1.00
27,1_ultrafast,5.5,1.00,16.8,0.00,1.00
27,2_superfast,7.4,0.98,13.6,0.38,1.36
27,3_veryfast,9.0,0.97,8.4,1.00,1.97
27,4_faster,12.6,0.93,10.1,0.80,1.73
27,5_fast,15.8,0.90,10.4,0.76,1.66
27,6_medium,18.8,0.87,10.0,0.81,1.68
27,7_slow,34.1,0.73,9.8,0.83,1.56
27,8_slower,59.6,0.48,9.0,0.93,1.41
27,9_veryslow,109.7,0.00,8.4,1.00,1.00

3
मुझे पता है कि सुपर उपयोगकर्ता के प्रारूपण विकल्प औसत दर्जे के हैं, लेकिन यदि आप डेटा को पाठ के रूप में पोस्ट करते हैं तो यह मददगार हो सकता है - संभवतः कोड स्वरूपण का उपयोग करके।
स्कॉट

1
चित्त आकर्षण करनेवाला। यह मेरी मशीन पर भी तेज है। धन्यवाद!
joeytwiddle

1
मुझे यह स्वीकार करना चाहिए कि मैंने आपके परिणामों को संदेह के साथ देखा, लेकिन मैंने परीक्षण दोहराया है और वी। इसी तरह के परिणाम, 2 मिनट 1080p फिल्म क्लिप पर ffmpeg संस्करण 3.3.2-1 का उपयोग कर रहा है। वास्तव में बहुत अधिक समय के सबसे छोटे फ़ाइल का आकार 60% उत्पन्न होता है, और 2 से आने वाले समय का 40% तक बहुत अधिक होता है (लेकिन बहुत अधिक नहीं)। अब से मैं बहुत कम CRF मान (18, 19, 20) के साथ अपने सभी एनकोड के लिए veryfast का उपयोग कर रहा हूँ क्योंकि बहुत अधिक CRF मूल्यों के साथ केवल थोड़ा धीमा था क्योंकि यह उच्चतर लोगों के साथ था। धन्यवाद आपने मुझे बहुत समय बचाया है। नीचे टिप्पणी में कच्चा डेटा और स्क्रिप्ट।
मैट

1
ऊपर की टिप्पणी से जारी रखते हुए ... यहां मेरा कच्चा डेटा है - सीआरएफ 18 से 27 और लिनक्स / यूनिक्स बैश स्क्रिप्ट जो मैंने एनकोड चलाने के लिए लिखी है (यदि कोई समान परीक्षण चलाने की इच्छा रखता है)।
मैट

1
यहाँ विषयों पर कुछ महान ब्लॉग पोस्ट हैं, x264 और x265 के लिए किए गए परीक्षणों के साथ (परिणाम, अनुमानित रूप से, प्रत्येक के लिए बहुत अलग हैं)
forresthopkinsa
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.