2011-04-08 116 views
18

我正在调用ffmpegsubprocess.Popen,并试图捕获stderr输出并将其写入logging在不输出配置信息的情况下运行ffmpeg?

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 开发商使用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 -s剥离--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-static 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 -s 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.
libavfilter 1.19。 0/1.19。 0
libswscale 0.11。 0/0.11。 0
libpostproc 51. 2. 0/51 2.0

之前最后输出的东西,我想登录:

好像流的编解码器0的帧速率从 容器不同帧速率: 47.95(1395分之66893) - > 23.98(二千七百九十〇分之六万六千八百九十三)至少一个输出文件 必须指定

是否有防止这种过度输出的选项?我应该以不同的方式做吗?

回答

32

现在可以使用FFmpeg 2.2和-hide_banner选项。另见相关的committicket

+2

如果有一个FFOPTIONS环境变量,我可以将其添加到这样的横幅总是隐藏,但我不认为有任何这样的功能? – yoyo 2015-03-04 19:18:05

0

看看ffmpeg的手册页,特别是-loglevel参数。

+1

我试过'-loglevel',它似乎没有效果。 – 2011-04-08 14:00:59

+0

我试过-loglevel恐慌,它抑制了输出。 https://superuser.com/questions/326629/how-can-i-make-ffmpeg-be-quieter-less-verbose – nish 2017-10-04 06:12:24

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

跳过它的不成功的尝试(我不明白什么GPL有这种瓜葛)查看here。我建议你去file a bug,希望你足够的信服。

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

+0

他们的错误跟踪器是史无前例的废话。 +1,如果你可以在跟踪器讨论横幅时获得链接。谢谢。 – 2011-06-08 03:44:56

+0

如果您可以链接到其跟踪程序中的相关错误,我仍然想给+1。 – 2011-11-26 01:06:17

+1

@Matt:我没有发现任何有关该横幅的错误报告:https://ffmpeg.org/trac/ffmpeg/query?stat = close&status = new&statat = open&status = reopened&max = 3000&order = priority。但请注意,其中一位作者(Ronald S. Bultje)在邮件列表中表示,这不会发生。 – tokland 2011-11-26 14:13:43

-1

FFmpeg的!=按预期工作Libav

ffmpeg从FFmpeg的有-loglevel参数。

+1

什么版本的ffmpeg?接受的解决方案提到这个网站实际上并不工作。 – 2012-02-11 02:35:38

+0

看起来像ffmpeg -loglevel 适用于任何高于“info”的级别。 loglevel参数(从最简单到最多):“quiet”“panic”“fatal”“error”“warning”“info”“verbose”“debug”。我正在使用ffmpeg 1.0(建立在mac上)。 – stib 2012-12-20 05:26:52

相关问题