मैं देख रहा हूँ कि -threads <count>ffmpeg में कमांड लाइन विकल्प है। इस विकल्प का डिफ़ॉल्ट मान क्या है?
मैं देख रहा हूँ कि -threads <count>ffmpeg में कमांड लाइन विकल्प है। इस विकल्प का डिफ़ॉल्ट मान क्या है?
जवाबों:
यह इस्तेमाल किए गए कोडेक, ffmpeg वर्जन और आपके CPU कोर काउंट पर निर्भर करता है। कभी-कभी यह प्रति कोर केवल एक धागा होता है। कभी-कभी यह अधिक जटिल होता है जैसे:
Libx264 के साथ यह फ्रेम थ्रेड्स के लिए कोर x 1.5 और स्लाइस थ्रेड्स के लिए कोर x 1 है।
2014 तक, यह एक इष्टतम संख्या का उपयोग करता है।
आप सीपीयू लोड (लिनक्स:, topविंडोज: कार्य प्रबंधक) को अलग-अलग विकल्पों के साथ fmmile में जांच कर बहु-कोर कंप्यूटर पर इसे सत्यापित कर सकते हैं :
-threads 0 (इष्टतम);
-threads 1 (एकल पिरोया);
-threads 2 (उदाहरण के लिए एक इंटेल कोर 2 डुओ के लिए 2 धागे);
कोई नहीं (डिफ़ॉल्ट भी इष्टतम)।
२०१५ संपादित करें: १२-कोर सीपीयू पर, कुछ fmmpeg कमांड में लिनक्स top२००% cpu (केवल २ कोर) पर दिखाई देता है, इससे कोई फर्क नहीं पड़ता कि नंबर किसको दिया गया है -threads। तो डिफ़ॉल्ट अभी भी "के रूप में अच्छा के रूप में इस ffmpeg बाइनरी मिल सकता है" के अर्थ में इष्टतम हो सकता है, लेकिन "मेरे लेट सीपीयू का पूरी तरह से शोषण" के अर्थ में इष्टतम नहीं है।
2015 में Ubuntu 14.04 पर ffmpeg 0.8.10-6 के साथ, 4 कोर सिस्टम पर 1 कोर का उपयोग किया।
htopयह दिखाया; केवल एक कोर का उपयोग किया गया था, और मुझे फुलएचडी वीडियो के लिए 16 एफपीएस रूपांतरण दर मिली।
-threads 4मेरे सभी सीपीयू कोर का उपयोग करके 100% तक चला गया और मुझे 47 एफपीएस की रूपांतरण दर मिली।
मैंने निम्नलिखित कमांड का उपयोग किया:
$ ffmpeg -i foo.mp4 -y -target pal-dvd -aspect 16:9 dvd-out.mpg
इनमें से कुछ उत्तर थोड़े पुराने हैं, और मैं यह जोड़ना चाहूंगा कि मेरे ffmpeg 4.1साथ libx264, सभी 6 कोर / 12 धागे मेरे Ryzen 5 2600X सिस्टम के साथ एन्कोडिंग बिना किसी -threadतर्क के अधिकतम किए गए थे ।
-vcodec libx264 -profile:v high444 -refs 14 -preset ultrafast -crf 18 -tune fastdecodeइसलिए इसे अलग करने के लिए कुछ चर हैं। जोड़ने पर -threads 12कोई प्रभाव नहीं पड़ा।
मैं एक CentOS 6.5 VM (Ryzen 1700 8c / 16t - vm को 16 कोर में से 12) में परिवर्तित करने के साथ खेल रहा था। 480p फिल्मों के साथ प्रयोग निम्नलिखित हैं:
धागा विकल्प / रूपांतरण दर (एफपीएस @ 60 सेकंड)
(none/default)/130fps
-threads 1/70fps
-threads 2/120fps
-threads 4/185fps
-threads 6/228fps
-threads 8/204fps
-threads 10/181fps
दिलचस्प हिस्सा सीपीयू लोडिंग ( htopइसे देखने के लिए उपयोग करना) था। 130fps रेंज पर
नो -threadsऑप्शन घाव का उपयोग करके लोड-लेवल पर सभी कोर में फैले लोड के साथ।
1 थ्रेड का उपयोग करना बिल्कुल ऐसा ही था, एक कोर को 100% पर लोड करना। किसी और चीज का उपयोग करने से एक और फैल-लोड स्थिति उत्पन्न हुई।
जैसा कि आप देख सकते हैं, कम रिटर्न का भी एक बिंदु है, इसलिए आपको अपने विशेष मशीन के लिए -threads विकल्प समायोजित करना होगा। मेरे सेटअप के लिए विशेष रूप से, -थ्रेड्स 6 (एक 12 कोर मशीन पर) का उपयोग करने के परिणामस्वरूप वीडियो को परिवर्तित करते समय सबसे अच्छा एफपीएस प्राप्त होता है (रूपांतरण को बाध्य करने के लिए एक अलग बिटरेट पर h264 से x264 तक) और रिटर्न वास्तव में अधिक धागे को कम कर देता है जिसे मैंने फेंक दिया था यह।
यह एक मेमोरी इश्यू भी हो सकता है - इसमें केवल 1GB वीएम को सौंपा गया था। मैं इसे बदल सकता हूं और देख सकता हूं कि क्या कुछ भी बदलता है। फिर भी - यह दर्शाता है कि -threadsविकल्प का उपयोग करने से प्रदर्शन में वृद्धि हो सकती है, इसलिए अपने सेटअपों को मिठाई स्थान खोजने के लिए विभिन्न स्तरों पर अपने विशेष मशीन पर कुछ परीक्षण चलाएं।
यह मानते हुए कि आपने थ्रेडिंग सक्षम की है, इसने 1.5x संख्या में कोर असाइन किया है।
-x264-params sliced-threads=1। या के उपयोग के माध्यम से -tune zerolatency।