web-dev-qa-db-ja.com

ffmpegでファイルのビデオコーデックを認識する方法

Divxまたはxvidでない場合(DX50、つまり、読み取れない場合)、テレビのDVDプレーヤーでAVIファイルを読み取るときに問題が発生します。

Cdrom/dvdに書き込む前に、これらのファイルのビデオコーデックを認識する高速スクリプトを作成したいと思います。

コマンド :

ffmpeg -i file.avi

コーデックではなく、ビデオストリーム(mpeg4、mpeg2など)の「コンテナ」を指定します。

ヒントはありますか?

ありがとう

23
GerryMulligan

mediainfo

mediainfo --Inform="Video;%Codec%" video.mkv

私のケースは戻りますか:

V_MPEG4/ISO/AVC

おかげで答えが可能になりました秒単位または他の形式のmediainfoを使用してビデオファイルの持続時間を見つける方法は?

ffprobe(ffmpeg)簡単な方法

ビデオにビデオストリームが1つしかない場合:

ffprobe -v error -select_streams v:0 -show_entries stream=codec_name \
  -of default=noprint_wrappers=1:nokey=1 video.mkv

私の場合は戻ります:

h264

秒でビデオの長さを取得する方法のおかげで答えが可能になりましたか?

ffprobe(ffmpeg)ダーティウェイ

この方法は理解しやすいですが面倒です。

ファイルを再生せずにコーデック情報を取得するには、ffprobeを使用します。

$ ffprobe video.mkv
[...]
Input #0, matroska,webm, from 'video.mkv':
  Metadata:
    ENCODER         : Lavf56.25.101
  Duration: 00:28:05.15, start: 0.000000, bitrate: 4353 kb/s
    Stream #0:0: Video: h264 (High 4:4:4 Predictive), yuv444p, 1280x960, SAR 1:1 DAR 4:3, 29.97 fps, 29.97 tbr, 1k tbn, 59.94 tbc (default)
    Metadata:
      ENCODER         : Lavc56.26.100 libx264
    Stream #0:1: Audio: vorbis, 48000 Hz, stereo, fltp (default)
    Metadata:
      ENCODER         : Lavc56.26.100 libvorbis

ビデオコーデック情報を抽出するには-ffmpegがstderrに情報を送信するため- pipe そしてそれをgrepします:

$ ffprobe video.mkv 2>&1>/dev/null | grep Stream。* Video 
ストリーム#0:0:ビデオ:h264(高4:4:4予測)、yuv444p、1280x960、SAR 1:1 DAR 4:3、29.97 fps、29.97 tbr、1k tbn 、59.94 tbc(デフォルト)

これをさらに減らすには、sedを導入します。

$ ffprobe video.mkv 2>&1>/dev/null | grep Stream。* Video | sed -e 's /.* Video://' -e 's/[、]。* //' 
 h264
45
qubodup

FFmpegはコーデックも提供します。 Stream #0.0: Video行をプルすると、コーデックが表示されます。 (技術的には0.1のような異なるストリーム番号になる可能性があることに注意してください。)以下の出力はMS Video-1を使用しています。これは、あなたが望むように、Input #0, aviで示されるコンテナとは異なります

例えば。:

FFmpeg version 0.5, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --prefix=/opt/local --disable-vhook --enable-gpl --enable-postproc --enable-swscale --enable-avfilter --enable-avfilter-lavf --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libdirac --enable-libschroedinger --enable-libfaac --enable-libfaad --enable-libxvid --enable-libx264 --mandir=/opt/local/share/man --enable-shared --enable-pthreads --cc=/usr/bin/gcc-4.2 --Arch=x86_64
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 0 / 52.20. 0
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libavfilter    1. 4. 0 /  1. 4. 0
  libswscale     1. 7. 1 /  1. 7. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Jan  8 2010 15:34:15, gcc: 4.2.1 (Apple Inc. build 5646) (dot 1)
Input #0, avi, from 'Movies/fvss_demo.avi':
  Duration: 00:02:00.30, start: 0.000000, bitrate: 719 kb/s
    Stream #0.0: Video: msvideo1, rgb555, 160x120, 10 tbr, 10 tbn, 10 tbc
    Stream #0.1: Audio: pcm_u8, 8000 Hz, mono, s16, 64 kb/s
At least one output file must be specified
manoa:~ stu$ 
3
Stu Thompson

代わりに MediaInfo を試してください。

各ストリームのコーデックが一覧表示され、その出力は解析するのに十分なほど単純です。XPathのようなクエリが必要な場合は、XML出力オプションもあります。

2
Darren Greaves

ffmpegはそれを持っています。 Macでは次のようにしました。

最初に次のようにffmpegをダウンロードします。

brew install ffmpeg --with-fdk-aac --with-ffplay --with-freetype --with-frei0r --with-libass --with-libvo-aacenc --with-libvorbis --with-libvpx --with-opencore-amr --with-openjpeg --with-opus --with-rtmpdump --with-schroedinger --with-speex --with-theora --with-tools

コマンドラインでこれを実行します:

ffmpeg -filter:v idet \
    -frames:v 100 \
    -an \
    -f rawvideo -y /dev/null \
    -i ~/Downloads/yourfile.mp4

次に、出力で次のようなものを確認します。

時間:00:00:05.48、開始:0.000000、ビットレート:952 kb/sストリーム#0:0(eng):ビデオ:h264(メイン)(avc1/0x31637661)、yuv420p(tv、 bt709)、750x1334、619 kb/s、29.97 fps、29.97 tbr、30k tbn、59.94 tbc(デフォルト)

1
j2emanue