डिफ़ॉल्ट रूप से कितने धागे ffmpeg का उपयोग करते हैं?


46

मैं देख रहा हूँ कि -threads <count>ffmpeg में कमांड लाइन विकल्प है। इस विकल्प का डिफ़ॉल्ट मान क्या है?

जवाबों:


24

यह इस्तेमाल किए गए कोडेक, ffmpeg वर्जन और आपके CPU कोर काउंट पर निर्भर करता है। कभी-कभी यह प्रति कोर केवल एक धागा होता है। कभी-कभी यह अधिक जटिल होता है जैसे:

Libx264 के साथ यह फ्रेम थ्रेड्स के लिए कोर x 1.5 और स्लाइस थ्रेड्स के लिए कोर x 1 है।


धन्यवाद। क्या आपके पास ffmpeg द्वारा समर्थित कुछ मानक कोडेक्स के लिए चूक का संदर्भ है?
एडवर्ड डेल

6
इस पर भरोसा मत करो। लिनक्स पर मेरा ffmpeg 0.7.8, डिफ़ॉल्ट रूप से 1 थ्रेड का उपयोग करता है, चाहे जो भी हो।
बाराफू अल्बिनो

बेहतर परिणाम प्राप्त करने के लिए किस मूल्य का उपयोग किया जा सकता है? PS मैं Android ढांचे में FFMpeg का उपयोग कर रहा हूं।
किलर

23

2014 तक, यह एक इष्टतम संख्या का उपयोग करता है।

आप सीपीयू लोड (लिनक्स:, topविंडोज: कार्य प्रबंधक) को अलग-अलग विकल्पों के साथ fmmile में जांच कर बहु-कोर कंप्यूटर पर इसे सत्यापित कर सकते हैं :

  • -threads 0 (इष्टतम);

  • -threads 1 (एकल पिरोया);

  • -threads 2 (उदाहरण के लिए एक इंटेल कोर 2 डुओ के लिए 2 धागे);

  • कोई नहीं (डिफ़ॉल्ट भी इष्टतम)।

२०१५ संपादित करें: १२-कोर सीपीयू पर, कुछ fmmpeg कमांड में लिनक्स top२००% cpu (केवल २ कोर) पर दिखाई देता है, इससे कोई फर्क नहीं पड़ता कि नंबर किसको दिया गया है -threads। तो डिफ़ॉल्ट अभी भी "के रूप में अच्छा के रूप में इस ffmpeg बाइनरी मिल सकता है" के अर्थ में इष्टतम हो सकता है, लेकिन "मेरे लेट सीपीयू का पूरी तरह से शोषण" के अर्थ में इष्टतम नहीं है।


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

6

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

6

इनमें से कुछ उत्तर थोड़े पुराने हैं, और मैं यह जोड़ना चाहूंगा कि मेरे ffmpeg 4.1साथ libx264, सभी 6 कोर / 12 धागे मेरे Ryzen 5 2600X सिस्टम के साथ एन्कोडिंग बिना किसी -threadतर्क के अधिकतम किए गए थे ।


मेरे पास 1800X है और मैं इसके 16 धागों में फैले हुए 20% उपयोग को नहीं देख रहा हूँ, लेकिन मैं कुछ वैकल्पिक तर्क भी इस्तेमाल कर रहा हूँ: -vcodec libx264 -profile:v high444 -refs 14 -preset ultrafast -crf 18 -tune fastdecodeइसलिए इसे अलग करने के लिए कुछ चर हैं। जोड़ने पर -threads 12कोई प्रभाव नहीं पड़ा।
इलास्कासेंट

3

मैं एक 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विकल्प का उपयोग करने से प्रदर्शन में वृद्धि हो सकती है, इसलिए अपने सेटअपों को मिठाई स्थान खोजने के लिए विभिन्न स्तरों पर अपने विशेष मशीन पर कुछ परीक्षण चलाएं।


क्या आप कृपया "धर्मान्तरण" से क्या जोड़ सकते हैं? आदर्श रूप में, सटीक कमांड।
ओन्ड्रा उइस्का

उबंटू 18.04 पर 4.1.3 और बहुत समान परिणाम। डिफ़ॉल्ट "सभी कोर पर कम भार" था।
Roel Van de Paar

मुझे लगता है कि क्यों आपको "12 कोर" मशीन पर 6 थ्रेड्स पर इष्टतम मिला (सीपीयू निर्दिष्ट नहीं है, पहले से सूचीबद्ध एक से अलग है) यह है कि 6 कोर की वास्तविक संख्या हो सकती है, और 12 थ्रेड्स की संख्या?
Roel Van de Paar

1

यह मानते हुए कि आपने थ्रेडिंग सक्षम की है, इसने 1.5x संख्या में कोर असाइन किया है।


फ्रेम थ्रेड्स के लिए कोर की 1.5 x संख्या। टुकड़ा धागे के लिए कोर की 1 एक्स संख्या। यह (lib) x264 के लिए विशिष्ट है। मुझे यकीन नहीं है कि अन्य एनकोडर के लिए आवंटन क्या है।
ललगन

@LordNeckbeard फ्रेम थ्रेडिंग और स्लाइस थ्रेडिंग के बीच कैसे स्विच करें !?
डॉजकी

1
@ Mr.Hyde शायद के साथ -x264-params sliced-threads=1। या के उपयोग के माध्यम से -tune zerolatency
ल्लगन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.