2010-12-30 14 views
13

मैं एक सी # विंडोज फॉर्म एप्लिकेशन के अंदर एफएफएमपीईजी को बुला रहा हूं। चूंकि यह इतना सीपीयू (हमेशा 90% से ऊपर) का उपयोग करता है, मेरे कोई भी धागे काम करना जारी रख सकता है। क्या इस सीपीयू उपयोग को सीमित करने का कोई तरीका है?मैं एफएफएमपीजी सीपीयू उपयोग को कैसे सीमित कर सकता हूं?

मैंने Process.PriorityClass को PriorityClass.BelowNormal पर सेट करने का प्रयास किया है लेकिन यह पूरी तरह से ffmpeg प्रक्रिया को अवरुद्ध कर दिया है।

मुझे यकीन है कि ऐसा करने का एक तरीका है क्योंकि मैं ffmpeg का उपयोग करने वाले बहुत से प्रोग्राम देखता हूं।

कृपया मदद करें।

उत्तर

20

आप CPU उपयोग का एक प्रतिशत करने के लिए ffmpeg सीमित नहीं कर सकते, लेकिन आप अपने ffmpeg कॉल पर -threads पैरामीटर सेट कर सकते हैं, यदि आप 4 कोर -threads 2 के लिए सेट की कोशिश की है कि लगभग 50% सीपीयू को आप तक सीमित रखना चाहिए।

एक और समाधान आपके एफएफएमपीईजी प्रक्रिया पर प्राथमिकता को कम करने के लिए हो सकता है, जो आपके अनुप्रयोगों से कम कुछ है।

+0

तो आप सुझाव दे रहे हैं कि अगर मेरे सीपीयू में एक कोर है तो मुझे इसकी प्राथमिकता कम करनी चाहिए। क्या यह वास्तव में ऐसा करने का सबसे अच्छा तरीका है? –

+1

@Mert, हाँ एक कोर कोर के लिए हाइपर थ्रेडिंग के बिना, प्राथमिकता को कम करने का तरीका होगा। मीडिया एन्कोडिंग एक सीपीयू गहन कार्य है, और यदि आप किसी भी प्रकार की स्केलेबिलिटी की तलाश में हैं तो आपको अपने आवेदन के समान मशीन पर चल रहे FFMpeg को चलाने पर विचार नहीं करना चाहिए, उस स्थिति में क्लाइंट/सर्वर समाधान कुछ ऐसा होगा जो आप देखना चाहते हैं । मुझे आशा है कि यह आपके प्रश्न का उत्तर देगा। –

संबंधित मुद्दे