web-dev-qa-db-ja.com

設定情報を出力せずにffmpegを実行しますか?

ffmpegsubprocess.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つの出力ファイルを指定する必要があります

この過剰な出力を防ぐオプションはありますか?私はそれを別の方法で行うべきですか?

28
Matt Joiner

これは、FFmpeg 2.2以降、 -hide_banner オプション。関連する commit および ticket も参照してください。

41
Andrew Marshall

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を持っています。それは単に面倒です。

3
tokland

Ffmpegのマンページ、特に-loglevelパラメーターを見てください。

0
Dr McKay