मैं ffmpeg को कैसे शांत / कम क्रिया कर सकता हूं?


116

डिफ़ॉल्ट ffmpeg द्वारा stderr को एक संपूर्ण लोटे संदेश भेजता है: जब बनाया, कैसे बनाया, कोडेक्स, आदि, आदि, आदि।

मैं इसे कैसे शांत कर सकता हूं?

मैंने कोशिश की है -v 0(और -v 10चूंकि दस्तावेज़ीकरण सिर्फ coyly कहता है Set the logging verbosity level.कि कोई संकेत नहीं है कि इनपुट की सीमा क्या है) - फिर भी शांत नहीं।

मैंने कोशिश की है -loglevel quiet- फिर भी चुप नहीं रहा ।

मुझे उल्लेख करना चाहिए, मुझे "शांत" की तलाश है, "कोई आउटपुट नहीं"। अगर कोई त्रुटि है तो मैं इसे देखना चाहता हूं, लेकिन मुझे हर बार ffmpeg के कॉन्फ़िगरेशन के बारे में सुनने की आवश्यकता नहीं है। एक। समय।


14
डेवलपर्स के प्रकारों के द्वारा, डेवलपर्स के लिए ffmpeg निश्चित रूप से उन लोगों में से एक है।
डिजिटएक्सपी

1
का उपयोग करें -loglevel quiet -stats
प्रातः

वैकल्पिक रूप -loglevel error -statsसे त्रुटियों को "उन लोगों सहित" को दिखाया जाएगा जिन्हें "से पुनर्प्राप्त किया जा सकता है" और उपयोग -statsएन्कोडिंग प्रगति और सांख्यिकी लाइन की छपाई सुनिश्चित करता है। बदलने -loglevelसे errorकरने के लिए warningथोड़ा और अधिक वर्बोज़ है, लेकिन आराम से एक टर्मिनल पृष्ठ पर फिट बैठता है।
मैट

जवाबों:


65

ffmpeg -hide_banner -loglevel panic

यह वर्तमान उत्तर के नीचे टिप्पणी में दिया गया है।

-hide_banner2013 के अंत में विकल्प पेश किया गया था - https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2013-Deuled/152349.html )


7
इसका स्वीकृत उत्तर होना चाहिए
NineCattoRules

4
सबसे अच्छा जवाब, हालांकि विकल्प-बैनर-बैनर इसे छिपाने की तुलना में अच्छा होगा
hetepeperfan

1
शायद जोड़ें -nostats, भी?
मिक्को रेंटालिनेन

117

मैंने इसका परीक्षण नहीं किया है, लेकिन मुझे करने के लिए मैन पेज में एक विकल्प दिखाई देता है:

ffmpeg -loglevel panic [rest of your ffmpeg stuff]

इसे बनाना चाहिए ताकि केवल गंभीर त्रुटियां लॉग इन हों, सिद्धांत रूप में


5
-loglevel panicमेरे साथ भी , मेरे लिए यह केवल आउटपुट को थोड़ा कम कर रहा है - यह अभी भी संस्करण की जानकारी, स्ट्रीम मैपिंग, कॉन्फ़िगरेशन विकल्प, (और यहां तक ​​कि सूचना की प्रगति भी करता है!) .... कोई विचार? मुझे यह उल्लेख करना पड़ सकता है कि यह नवीनतम svn ट्रंक से स्व-संकलित संस्करण है।
कोडिंग

7
पाइप को इसे थोड़ी बाल्टी में रखें:> / देव / अशक्त 2> & 1
रोगरडैक

2
@rogerdpack जो अधिकांश कार्यक्रमों के लिए काम करेगा, लेकिन ffmpeg stderout के बजाय अपने सभी टेक्स्ट आउटपुट को stderout में रखता है (यह ऐसा करता है ताकि आप एन्कोडर आउटपुट को अन्य प्रोग्रामों में पाइप कर सकें), इसलिए stoutout को / dev / null 'में रीडायरेक्ट करें।' टी कुछ भी उपयोगी है।
evilsoup

20
-hide_bannerएक कम verbosity स्तर के अलावा का उपयोग करना एक अच्छा समझौता होगा।
मकावेली

5
कहा गया है कि सब कुछ के अलावा, -nostats प्रगति आउटपुट को अक्षम कर देगा।
एली

56

यहां आपके पास स्रोत कोड (FFmpeg संस्करण 0.10.2.git) से लॉज़वेल्स हैं

const struct { const char *name; int level; } log_levels[] = {
        { "quiet"  , AV_LOG_QUIET   },
        { "panic"  , AV_LOG_PANIC   },
        { "fatal"  , AV_LOG_FATAL   },
        { "error"  , AV_LOG_ERROR   },
        { "warning", AV_LOG_WARNING },
        { "info"   , AV_LOG_INFO    },
        { "verbose", AV_LOG_VERBOSE },
        { "debug"  , AV_LOG_DEBUG   },
    };

5
हालाँकि URL समय के साथ बदलते हैं, लेकिन उन्हें अपने उत्तर के स्रोत के रूप में शामिल करना अच्छा है। उदाहरण के लिए, वर्तमान में यह ffmpeg.org/ffmpeg.html#toc-Generic-options पर प्रलेखित है और पाठक को पता होगा कि इस URL में परिवर्तन होने पर भी डॉक्स में कहां देखना है।
Fr0zenFyr

19

मैंने निम्नलिखित सफलता के साथ प्रयोग किया है (लेखन के समय नवीनतम FFMPEG संस्करण):

-nostats -loglevel 0

फिर यह मेरे उपयोग परिदृश्य में बिल्कुल शांत है।


ffmpeg 3.2 में इस समाधान से संतुष्ट
बर्नहार्ड डब्लर

-nostatsवही था जिसकी मुझे तलाश थी। यह प्रगति आउटपुट (जैसे गैर-टर्मिनल संदर्भ में उपयोगी) को दबा देगा।
जॉक्स

दु: -nostatsख के साथ-साथ बैनर भी छुपाता है। ffmpeg को एक -show_bannerविकल्प की जरूरत है ;)
22

18
ffmpeg -loglevel error [other commands]

यह बैनर छुपाता है और केवल त्रुटियों को प्रदर्शित करता है। -loglevel warningयदि आप चेतावनी देखना चाहते हैं तो इसका उपयोग करें ।

Ffmpeg में परीक्षण 3.0.2।

से प्रलेखन :

-लॉगल [दोहराना +] loglevel | -v [दोहराना +] लॉजवेल

लाइब्रेरी द्वारा उपयोग किया जाने वाला लॉगिंग स्तर सेट करें। "रिपीट +" जोड़ने से संकेत मिलता है कि बार-बार लॉग आउटपुट को पहली पंक्ति में संपीड़ित नहीं किया जाना चाहिए और "अंतिम संदेश दोहराया गया n बार" लाइन को छोड़ दिया जाएगा। "रिपीट" का उपयोग अकेले भी किया जा सकता है। यदि "रिपीट" का उपयोग अकेले किया जाता है, और बिना किसी पूर्व लॉजिवल सेट के, डिफ़ॉल्ट लॉजेल का उपयोग किया जाएगा। यदि कई लॉजेल पैरामीटर दिए गए हैं, तो 'रिपीट' का उपयोग करने से लॉजेल नहीं बदलेगा। Loglevel एक स्ट्रिंग या संख्या है जिसमें निम्नलिखित मान शामिल हैं:

'चुप, -8'

कुछ भी नहीं दिखाओ; चुप हो।

'घबराहट, 0'

केवल घातक त्रुटियां दिखाते हैं जो प्रक्रिया को क्रैश कर सकती हैं, जैसे कि विफलता। यह वर्तमान में किसी भी चीज़ के लिए उपयोग नहीं किया जाता है।

'घातक, 8'

केवल घातक त्रुटियाँ दिखाते हैं। ये त्रुटियां हैं जिसके बाद प्रक्रिया बिल्कुल जारी नहीं रह सकती है।

'त्रुटि, 16'

उन सभी त्रुटियों को दिखाएं, जिनमें से पुनर्प्राप्त किया जा सकता है।

'चेतावनी, 24'

सभी चेतावनियाँ और त्रुटियाँ दिखाएँ। संभवतः गलत या अप्रत्याशित घटनाओं से संबंधित कोई भी संदेश दिखाया जाएगा।

'जानकारी, 32'

प्रोसेसिंग के दौरान सूचनात्मक संदेश दिखाएं। यह चेतावनी और त्रुटियों के अतिरिक्त है। यह व्यतिक्रम मूल्य है।

'क्रिया, 40'

उसी के रूप में info, और अधिक वर्बोज़ को छोड़कर।

'डिबग, 48'

डिबगिंग जानकारी सहित सब कुछ दिखाएं।

'ट्रेस, 56'

डिफ़ॉल्ट रूप से प्रोग्राम स्टैडर में प्रवेश करता है, यदि रंग टर्मिनल द्वारा समर्थित है, तो त्रुटियों और चेतावनियों को चिह्नित करने के लिए रंगों का उपयोग किया जाता है। लॉग कलरिंग को पर्यावरण चर को अक्षम करने के लिए अक्षम किया जा सकता है AV_LOG_FORCE_NOCOLORया NO_COLOR, पर्यावरण चर को स्थापित करने के लिए मजबूर किया जा सकता है AV_LOG_FORCE_COLOR। पर्यावरण चर NO_COLORका उपयोग पदावनत है और इसे निम्नलिखित FFmpeg संस्करण में छोड़ दिया जाएगा।


5

निम्नलिखित ने macOS पर मेरे लिए काम किया:

ffmpeg -v quiet

या केवल प्रगति को देखने के लिए:

ffmpeg -v quiet -stats

ठीक वैसा ही मैं देख रहा था। मैं एक स्क्रिप्ट में ffmpeg उपयोग कर रहा हूँ और यह देखने के लिए कि यह काम कर रहा है की जरूरत है, लेकिन इनपुट और आउटपुट धाराओं आदि के बारे में सभी जानकारी की जरूरत नहीं है
Stib

3

आप grep के माध्यम से stderr को पाइप कर सकते हैं। उदाहरण के लिए, यदि आप कॉन्फ़िगरेशन जानकारी को निकालना चाहते हैं, तो आप इसे इस तरह से कर सकते हैं:

% ffmpeg -i infile.avi -s 640x480 outfile.avi >/dev/null 2>&1 | grep -v configuration:

मेरा मानना ​​है कि ऐसा करने की आवश्यकता हो सकती है ffmpeg … 2>&1 >/dev/null | grep …
स्कॉट

0

यह इसके बारे में जाने के लिए थोड़ा सस्ता है, लेकिन >/dev/null 2>&1खोल में ffmpeg को चुपचाप रखना एक निश्चित तरीका है।

उदाहरण

ffmpeg -f x11grab -y -r 24 -s 800x600 -i :0.0+1366,100 -f oss -i /dev/dsp3 -sameq ./out.avi >/dev/null 2>&1

बैश आउटपुट के बारे में अधिक जानकारी


14
सिवाय इसके कि ffmpeg आपसे एक कदम आगे है, और कॉन्फ़िगरेशन की जानकारी और वास्तविक त्रुटियों दोनों को stderr पर आउटपुट करता है ।
blahdiblah

0

ffmpeg -loglevel error -hide_banner -nostats

सिर्फ त्रुटियाँ, और कुछ नहीं।

मुझे व्यक्तिगत रूप से यह सबसे अच्छा लगता है;

ffmpeg -loglevel warning -hide_banner -stats

यह केवल चेतावनी और त्रुटियां देता है, लेकिन काम की प्रगति को भी दर्शाता है।

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