Як я можу зробити ffmpeg тихіше / менш багатослівним?


116

За замовчуванням ffmpeg надсилає цілі повідомлення лоти на stderr: коли їх будують, як будують, кодеки тощо, тощо, тощо, тощо.

Як я можу зробити тихіше?

Я спробував -v 0-v 10оскільки документація просто зухвало говорить, Set the logging verbosity level.не вказуючи, який діапазон входів) - все ще не тихо.

Я спробував -loglevel quiet- все ще не тихо.

Я мушу зазначити, що я шукаю "тихіше", а не "жодного результату ніколи". Якщо є помилка, я хочу її бачити, але мені не потрібно чути про конфігурацію ffmpeg кожен. неодружений час.


14
ffmpeg, безумовно, одна з таких для розробників, за видами програм розробників.
digitxp

1
Використовуйте -loglevel quiet -stats.
fredsbend

Альтернативно -loglevel error -statsвідображатимуться помилки, "включаючи помилки, з яких можна відновити", а використання -statsзабезпечує друк рядка прогресу кодування та статистики. Перехід -loglevelвід errorдо warningтрохи більш детальний, але зручно розміщується на одній термінальній сторінці.
матст

Відповіді:


65

ffmpeg -hide_banner -loglevel panic

Про це йдеться у коментарі нижче поточної відповіді.

Опція -hide_bannerбула введена наприкінці 2013 року - https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2013-December/152349.html )


7
це має бути прийнята відповідь
NineCattoRules

4
Найкраща відповідь, проте варіант -шоу-банер буде приємніше, ніж приховувати його
hetepeperfan

1
Може, додати -nostatsтеж?
Мікко Ранталайнен

117

Я цього не перевіряв, але на сторінці "man" бачу варіант:

ffmpeg -loglevel panic [rest of your ffmpeg stuff]

Потрібно зробити так, що теоретично фіксуються лише серйозні помилки


5
Навіть -loglevel panicдля мене це лише трохи зменшує вихід - він все ще друкує інформацію про версії, відображення потоку, параметри конфігурації (і навіть інформацію про прогрес!) .... будь-які ідеї? Можливо, я повинен зазначити, що це самокомпільована версія з останнього магістралі svn.
кодування

7
передайте його у відро для бітів:> / dev / null 2> & 1
rogerdpack

2
@rogerdpack, який би працював у більшості програм, але ffmpeg передає весь свій текст у stderr, а не stdout (це робиться так, що ви можете передавати вихід кодера в інші програми), тому перенаправлення stdout до / dev / null wouldn ' не робити нічого корисного.
злий

20
Використання -hide_bannerв додаток до зниження рівня детальності буде хорошим компромісом.
Makaveli84

5
На додаток до всього, що було сказано, -nostats відключить результат прогресу.
Елі

56

Тут у вас є loglevels з вихідного коду (версія 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було те, що я шукав. Це придушить результат прогресу (наприклад, корисний у нетермінальному контексті).
jox

Сумно -nostatsховає банер також. ffmpeg потрібен -show_bannerваріант;)
mgutt

18
ffmpeg -loglevel error [other commands]

Це приховує банер і відображає лише помилки. Використовуйте, -loglevel warningякщо ви хочете бачити попередження.

Перевірено у Ffmpeg 3.0.2.

З документації :

-loglevel [повторити +] loglevel | -v [повторити +] loglevel

Встановіть рівень журналу, який використовує бібліотека. Додавання "повторення +" означає, що повторний вихід журналу не повинен стискатися до першого рядка, а рядок "Останнє повідомлення, повторене n разів" буде опущено. "повтор" також можна використовувати окремо. Якщо "повтор" використовується поодинці і без попереднього встановленого рівня розрівнювання, використовуватиметься за замовчуванням. Якщо задано кілька параметрів, то використання "повтору" не змінить рівень. loglevel - це рядок або число, що містить одне з наступних значень:

'тихо, -8'

Не показуйте взагалі нічого; бути тихим.

'паніка, 0'

Показуйте лише фатальні помилки, які можуть призвести до краху процесу, як-от, наприклад, збій. Наразі це не використовується для нічого.

'смертельний, 8'

Показати лише фатальні помилки. Це помилки, після яких процес абсолютно не може продовжуватися після.

'помилка, 16'

Показати всі помилки, включаючи помилки, з яких можна відновити.

'попередження, 24'

Показати всі попередження та помилки. Буде показано будь-яке повідомлення, пов’язане з можливими неправильними або несподіваними подіями.

'інформація, 32'

Показати інформативні повідомлення під час обробки. Це додатково до попереджень та помилок. Це значення за замовчуванням.

'багатослівний, 40'

Те саме, що info, крім більш багатослівного.

'налагодження, 48'

Показати все, включаючи інформацію про налагодження.

'слід, 56'

За замовчуванням програма реєструється у stderr, якщо забарвлення підтримується терміналом, кольори використовуються для позначення помилок та попереджень. Забарвлення журналу можна відключити, встановивши змінну середовища AV_LOG_FORCE_NOCOLORабо NO_COLOR, або може бути примусово встановити змінну середовища AV_LOG_FORCE_COLOR. Використання змінної середовища NO_COLORзастаріло і буде відмінено у наступній версії FFmpeg.


5

Наступне для мене працювало на macOS:

ffmpeg -v quiet

або бачити лише прогрес:

ffmpeg -v quiet -stats

Саме це я і шукав. Я використовую ffmpeg в сценарії і мені потрібно переконатися, що він працює, але не потрібна вся інформація про вхідні та вихідні потоки тощо
стиб

3

Ви можете трубопроводити більш жорсткі через греп. Наприклад, якщо ви хочете видалити інформацію про конфігурацію, ви можете зробити це так:

% 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

Більше інформації про вихід bash


14
За винятком того, що ffmpeg знаходиться на крок попереду вас, і виводить на stderr інформацію про конфігурацію та фактичні помилки.
blahdiblah

0

ffmpeg -loglevel error -hide_banner -nostats

Просто помилки, більше нічого.

Мені особисто це найбільше подобається;

ffmpeg -loglevel warning -hide_banner -stats

Це дає лише попередження та помилки, але також показує хід роботи.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.