94

По умолчанию ffmpeg отправляет целые сообщения lotta в stderr: когда собран, как собран, кодеки и т.д., И т.д., И т.д.

Как я могу сделать его тише?

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

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

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

8 ответов8

91

Я не проверял это, но я вижу вариант на странице руководства:

ffmpeg -loglevel panic [rest of your ffmpeg stuff]

Должен сделать так, чтобы в журнале регистрировались только серьезные ошибки.

48

Здесь у вас есть уровни логирования из исходного кода (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   },
    };
46

ffmpeg -hide_banner -loglevel panic

Об этом говорится в комментарии под текущим ответом.

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

17

Я с успехом использовал следующее (новейшая версия FFMPEG на момент написания):

-nostats -loglevel 0

Тогда это абсолютно тихо в моем сценарии использования.

16
ffmpeg -loglevel error [other commands]

Это скрывает баннер и отображает только ошибки. Используйте -loglevel warning если вы хотите видеть предупреждения.

Протестировано в Ffmpeg 3.0.2.

Из документации:

-loglevel [repeat+] loglevel | -v [повтор +] уровень логирования

Установите уровень ведения журнала, используемый библиотекой. Добавление «repeat +» означает, что повторяющиеся выходные данные журнала не должны быть сжаты до первой строки, а строка "Последнее сообщение повторено n раз" будет пропущена. "повторить" также можно использовать отдельно. Если "repeat" используется отдельно и без предварительной установки уровня журнала, будет использоваться уровень регистрации по умолчанию. Если задано несколько параметров лог-уровня, использование 'repeat' не изменит лог-уровень. loglevel - это строка или число, содержащее одно из следующих значений:

'тихо, -8'

Вообще ничего не показывать; Молчи.

'паника, 0'

Показывать только фатальные ошибки, которые могут привести к сбою процесса, такие как и утверждать сбой. Это в настоящее время не используется ни для чего.

'Фатальный, 8'

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

'ошибка 16'

Показать все ошибки, в том числе те, которые можно исправить.

'предупреждение, 24'

Показать все предупреждения и ошибки. Любое сообщение, связанное с возможно неправильными или неожиданными событиями, будет показано.

'info, 32'

Показывать информативные сообщения во время обработки. Это в дополнение к предупреждениям и ошибкам. Это значение по умолчанию.

'многословный, 40'

То же, что и info , кроме более подробного.

'debug, 48'

Показать все, включая информацию об отладке.

'след, 56'

По умолчанию программа регистрирует в stderr, если окраска поддерживается терминалом, цвета используются для маркировки ошибок и предупреждений. Окрашивание журнала может быть отключено установкой переменной среды AV_LOG_FORCE_NOCOLOR или NO_COLOR , или может быть принудительно установлена переменная среды AV_LOG_FORCE_COLOR . Использование переменной среды NO_COLOR устарело и будет удалено в следующей версии FFmpeg.

2

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

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

Следующее работало для меня на macOS:

ffmpeg -v quiet

или только видеть прогресс:

ffmpeg -v quiet -stats
-1

Это немного дёшево, но добавление >/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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .