python - and - ¿Ejecutar ffmpeg sin generar información de configuración?
python execute shell command and get output (4)
AFAIK no hay manera, loglevel
no sirve de nada. Mira ffmpeg.c:
init_opts();
show_banner();
y 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);
}
Vea here un intento fallido de omitirlo (no entiendo qué tiene que ver la GPL con nada de esto). Le sugiero que presente un error y espero que esté lo suficientemente convencido.
Como muchos otros, he compilado ffmpeg con show_banner()
comentado, es simplemente fastidioso.
Estoy invocando ffmpeg
con subprocess.Popen
, y tratando de capturar la salida stderr
y escribirla en el 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
genera mucha información de configuración como la siguiente:
FFmpeg versión 0.6.2-4: 0.6.2-1ubuntu1, Copyright (c) 2000-2010 que los desarrolladores de Libav crearon el 22 de marzo de 2011 15:55:04 con gcc 4.5.2
configuración - --extra-versión = 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 ADVERTENCIA: configuración de biblioteca no coincidente configuración de 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-li bdirac --enable-libfaad --enable-libmp3lame --enable-librtmp --enable-libx264 --enable-libxvid --enable-libdc1394 --enable-shared --disable-static libavcodec configuración: --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
Antes de finalmente dar salida a las cosas que me gustaría registrar:
Parece que la velocidad de fotogramas del códec del flujo 0 difiere de la velocidad de fotogramas del contenedor: 47.95 (66893/1395) -> 23.98 (66893/2790) Se debe especificar al menos un archivo de salida
¿Hay alguna opción para evitar esta salida excesiva? ¿Debo hacerlo de otra manera?
Eche un vistazo a la página de -loglevel
ffmpeg, especialmente el parámetro -loglevel
.
Esto ahora es posible a partir de FFmpeg 2.2 con la opción -hide_banner
. Véase también el correspondiente commit y ticket .
FFmpeg! = Libav
ffmpeg
de FFmpeg con el parámetro -loglevel
funciona como se esperaba.