ffmpegからビデオの寸法/解像度/幅x高さを取得する



Getting Video Dimension Resolution Width X Height From Ffmpeg



解決:

使用するffprobe

例1:キー/変数名を使用

ffprobe -v error -show_entries stream = width、height -of default = noprint_wrappers = 1 input.mp4 width = 1280 height = 720

例2:幅x高さだけ

ffprobe -v error -show_entries stream = width、height -of csv = p = 0:s = x input.m4v 1280x720

例3:JSON

ffprobe -v error -select_streams v -show_entries stream = width、height -of json input.mkv {'programs':[]、 'streams':[{'width':1280、 'height':720}]}

例4:JSON Compact

ffprobe -v error -select_streams v -show_entries stream = width、height -of json = compute = 1 input.mkv {'programs':[]、 'streams':[{'width':1280、 'height':720} ]}

例5:XML

ffprobe -v error -select_streams v -show_entries stream = width、height -of xml input.mkv

オプションの機能:

  • -v error静かな出力を作成しますが、エラーの表示は許可します。バージョン、構成、入力の詳細など、通常の一般的なFFmpeg出力情報を除外します。



  • -show_entries stream = width、height幅と高さストリーム情報。

  • -ofオプションは、出力形式(default、compact、csv、flat、ini、json、xml)を選択します。各フォーマットの説明と追加のフォーマットオプションについては、FFprobeのドキュメント:ライターを参照してください。



  • -select_streams v:0これは、入力に複数のビデオストリームが含まれている場合に追加できます。v:0は、最初のビデオストリームのみを選択します。そうでなければ、あなたは同じくらい多くを得るでしょう幅とビデオストリームがあるので高さ出力。-select_streams vを使用して、すべてのビデオストリームからの情報を表示し、空のオーディオを回避できますJSONおよびXML出力で情報をストリーミングします。

  • 詳細については、FFprobeのドキュメントとFFmpeg Wiki:FFprobeのヒントを参照してください。


mediainfoを見てくださいそこにあるほとんどのフォーマットを処理します。



ffmpegからの出力を解析する方法を探している場合は、正規表現を使用してください d + x d +

perlの使用例:

$ ./ffmpeg -i test020.3gp 2>&1 | perl -lane '/( d + x  d +)/' 176x120の場合は$ 1を出力します

Pythonを使用した例(完全ではありません):

$ ./ffmpeg -i /nfshome/enilfre/pub/test020.3gp 2>&1 | python -c'import sys、re; [sys.stdout.write(str(re.findall(r '( d + x  d +)'、line)))for line in sys.stdin] '

[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] ['176x120'] [] [] []

Pythonのワンライナーはperlのワンライナーほどキャッチーではありません:-)


上記のFredrikのヒントから、MediaInfo(http://mediainfo.sourceforge.net/en)を使用してこれを行った方法は次のとおりです。

>>> p1 = subprocess.Popen(['mediainfo'、 '-Inform = Video;%Width%x%Height%'、 '/ Users / david / Desktop / 10stest720p.mov']、stdout = PIPE)>> >寸法= p1.communicate()[0] .strip( ' n')>>>寸法 '1280x688'