运行ffmpeg而不输出配置信息?

时间:2011-04-08 13:54:04

标签: python logging ffmpeg subprocess stderr

我正在使用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,   版权所有(c)2000-2010 Libav   开发人员于2011年3月22日建成   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警告:库配置   mismatch 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-static libavcodec configuration:   --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 个答案:

答案 0 :(得分:40)

现在可以使用带有-hide_banner选项的FFmpeg 2.2。另请参阅相关的committicket

答案 1 :(得分:3)

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);
}

请参阅here尝试跳过它的尝试失败(我不知道GPL与此有什么关系)。我建议你file a bug并希望你足够有信心。

和其他许多人一样,我已经用show_banner()编译了ffmpeg,这简直令人厌烦。

答案 2 :(得分:0)

查看ffmpeg的联机帮助页,尤其是-loglevel参数。

答案 3 :(得分:-1)

FFmpeg!= Libav

来自FFmpeg的

ffmpeg -loglevel参数按预期工作。

相关问题