Запустить ffmpeg без вывода информации о конфигурации? - PullRequest
22 голосов
/ 08 апреля 2011

Я вызываю ffmpeg с subprocess.Popen и пытаюсь захватить вывод stderr и записать его в logging.

args = ['ffmpeg', '-i', path]
if start:
    args += ['-ss', start]
if end:
    args += ['-t', end]
args += [
    '-vcodec', 'copy',
    '-acodec', 'copy',
    '-scodec', 'copy',
    '-f', 'mpegts',
    '-y', '/dev/stdout']
self.child = subprocess.Popen(
    args,
    stdin=open(os.devnull, 'rb'),
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE)

ffmpeg генерирует много информации о конфигурации, как показано ниже:

FFmpeg версия 0.6.2-4: 0.6.2-1ubuntu1, Copyright (c) 2000-2010 Либав разработчики построены на 22 марта 2011 15:55:04 с gcc 4.5.2
конфигурация: --extra-version = 4: 0.6.2-1ubuntu1 --prefix = / usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable- libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable-runtime-cpudetect --enable-vaapi - enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static ВНИМАНИЕ: конфигурация библиотеки несоответствие конфигурации libavutil: --extra-version = 4: 0.6.2-1ubuntu2 --prefix = / usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libdirac --enable- libgsm --enable-libopenjpeg --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable- runtime-cpudetect --enable-vaapi --enable-libopenjpeg --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libfaad --enable-libdirac --enable-libfaad - enable-libmp3lame --enable-librtmp --enable-libx264 --enable-libxvid --enable-libdc1394 --enable-shared --disable-статическая конфигурация libavcodec: --extra-version = 4: 0.6.2-1ubuntu2 --prefix = / usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libdirac --enable- libgsm --enable-libopenjpeg --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable- runtime-cpudetect --enable-vaapi --enable-libopenjpeg --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libfaad --enable-libdirac --enable-libfaad - enable-libmp3lame --enable-librtmp --enable-libx264 --enable-libxvid --enable-libdc1394 --enable-shared --disable-static libavutil 50.15. 1 / 50.15. 1 * * тысяча двадцать-один libavcodec 52.72. 2 / 52,72. 2
libavformat 52.64. 2 / 52,64. 2
libavdevice 52. 2. 0 / 52. 2. 0
libavfilter 1.19. 0 / 1.19. 0
libswscale 0.11. 0 / 0,11. 0
libpostproc 51. 2. 0 / 51. 2. 0

Перед окончательным выводом материала, который я хотел бы записать:

Кажется, поток 0, частота кадров кодека отличается от частоты кадров контейнера: 47,95 (66893/1395) -> 23,98 (66893/2790) хотя бы один выходной файл должен быть указан

Есть ли возможность предотвратить этот чрезмерный вывод? Должен ли я делать это по-другому?

Ответы [ 4 ]

40 голосов
/ 28 марта 2014

Теперь это возможно с FFmpeg 2.2 с опцией -hide_banner.См. Также соответствующие коммит и тикет .

3 голосов
/ 08 апреля 2011

AFAIK нет пути, loglevel бесполезно.Посмотрите на ffmpeg.c:

init_opts();
show_banner();

и cmdutils.c:

void show_banner(void)
{
    fprintf(stderr, "%s version " FFMPEG_VERSION ", Copyright (c) %d-%d the FFmpeg developers\n",
            program_name, program_birth_year, this_year);
    fprintf(stderr, "  built on %s %s with %s %s\n",
            __DATE__, __TIME__, CC_TYPE, CC_VERSION);
    fprintf(stderr, "  configuration: " FFMPEG_CONFIGURATION "\n");
    print_all_libs_info(stderr, INDENT|SHOW_CONFIG);
    print_all_libs_info(stderr, INDENT|SHOW_VERSION);
}

См. здесь для неудачной попытки пропустить его (я не получаючто GPL имеет отношение к чему-либо из этого).Я предлагаю вам сообщить об ошибке и надеюсь, что вы достаточно убедительны.

Как и многие другие, я скомпилировал ffmpeg с show_banner(), это просто утомительно.

0 голосов
/ 10 февраля 2012

FFmpeg! = Libav

ffmpeg от FFmpeg с параметром -loglevel работает как положено.

0 голосов
/ 08 апреля 2011

Посмотрите справочную страницу ffmpeg, особенно параметр -loglevel.

...