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 2011年3月22日15:55:04にgcc4.5.2でビルドされたLibav開発者
構成:-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 --e nable-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-swscale --enable-x11grab --enable-libfaad --enable-libdirac --enable-libfaad --enable-libmp3lame- -enable-librtmp --enable-libx264 --enable-libxvid --enable-libdc1394 --enable-shared --disable-static libavutil50.15。 1 /50.15。 1
libavcodec52.72。 2 /52.72。 2
libavformat52.64。 2 /52.64。 2
libavdevice 52. 2. 0/52. 2. 0
libavfilter1.19。 0 /1.19。 0
libswscale0.11。 0 /0.11。 0
libpostproc 51. 2. 0/51. 2. 0
最終的にログに記録したいものを出力する前に:
ストリーム0コーデックのフレームレートがコンテナのフレームレートと異なるようです:47.95(66893/1395)-> 23.98(66893/2790)少なくとも1つの出力ファイルを指定する必要があります
この過剰な出力を防ぐオプションはありますか?私はそれを別の方法で行うべきですか?
これは、FFmpeg 2.2以降、 -hide_banner
オプション。関連する commit および ticket も参照してください。
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がこれと何の関係があるのかわかりません)。 バグを報告する をお勧めします。十分に有罪判決を受けていることを願っています。
他の多くの人と同じように、私はshow_banner()
をコメントアウトしてコンパイルしたffmpegを持っています。それは単に面倒です。
Ffmpegのマンページ、特に-loglevel
パラメーターを見てください。