ffprobe

マルチメディア ストリームの情報を確認できます。

概要

ffprobe [options] input_url
Synopsis - ffprobe Documentation

たとえば次のようにすることで、sample.mp4の情報を取得できます。

ffprobe sample.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\sample.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 2010-01-01T00:00:00.000000Z
    encoder         : Lavf58.2.103
  Duration: 00:10:00.00, start: 0.000000, bitrate: 638 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 720x480 [SAR 32:27 DAR 16:9], 502 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata:
      creation_time   : 2010-01-01T00:00:00.000000Z
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      creation_time   : 2010-01-01T00:00:00.000000Z
      handler_name    : SoundHandler

使用可能なオプションは、ffprobe -hとすることで確認できます。

出力内容の指定

オプション セクション名 出力内容
-show_log loglevel LOG デコーダのログ情報 (-show_framesと共に用いる)
-show_error ERROR 入力を調査中に見つかったエラー
-show_format FORMAT 入力マルチメディア ストリーム内のコンテナ フォーマットの情報
-show_streams STREAM 入力マルチメディア ストリーム内のメディア ストリームごとの情報
-show_frames FRAME または SUBTITLE 入力マルチメディア ストリーム内のフレームと字幕ごとの情報
-show_packets PACKET 入力マルチメディア ストリーム内のパケットごとの情報
-show_programs PROGRAM_STREAM 入力マルチメディア ストリーム内のプログラムとストリームの情報
-show_chapters CHAPTER フォーマット内のチャプターの情報

指定の内容が存在しないならば、何も出力されません。

特定の記載だけを出力したいならば、

  • -show_entries format=duration
  • -show_entries packet=pts_time,duration_time,stream_index : stream=index,codec_type

のように指定します。

フォーマット (format)

-print_format

ffprobe -print_format compact -show_format sample.mp4

-print_format (または-of) を指定することで、指定の書式に整形された結果を得られます。

  • default
  • compact または csv (compactとは、オプションの既定値が異なる)
  • flat
  • ini
  • json
  • xml

フォーマットごとに異なるオプションが用意されており、

-print_format writer_name[=writer_options]

の書式で、たとえばdefaultにnoprint_wrappersとnokeyのオプションを指定するならば-print_format default=noprint_wrappers=1:nokey=1のように指定します。4 Writers - ffprobe Documentation

default

[FORMAT]
filename=C:\sintel_trailer-480p.mp4
nb_streams=2
nb_programs=0
format_name=mov,mp4,m4a,3gp,3g2,mj2
format_long_name=QuickTime / MOV
start_time=0.000000
duration=52.209000
size=4372373
bit_rate=669979
probe_score=100
TAG:major_brand=isom
TAG:minor_version=512
TAG:compatible_brands=isomiso2avc1mp41
TAG:creation_time=1970-01-01T00:00:00.000000Z
TAG:title=Sintel Trailer
TAG:artist=Durian Open Movie Team
TAG:encoder=Lavf52.62.0
TAG:copyright=(c) copyright Blender Foundation | durian.blender.org
TAG:description=Trailer for the Sintel open movie project
[/FORMAT]

compact

format|filename=C:\\sintel_trailer-480p.mp4|nb_streams=2|nb_programs=0|format_name=mov,mp4,m4a,3gp,3g2,mj2|format_long_name=QuickTime / MOV|start_time=0.000000|duration=52.209000|size=4372373|bit_rate=669979|probe_score=100|tag:major_brand=isom|tag:minor_version=512|tag:compatible_brands=isomiso2avc1mp41|tag:creation_time=1970-01-01T00:00:00.000000Z|tag:title=Sintel Trailer|tag:artist=Durian Open Movie Team|tag:encoder=Lavf52.62.0|tag:copyright=(c) copyright Blender Foundation \| durian.blender.org|tag:description=Trailer for the Sintel open movie project

flat

format.filename="C:\\sintel_trailer-480p.mp4"
format.nb_streams=2
format.nb_programs=0
format.format_name="mov,mp4,m4a,3gp,3g2,mj2"
format.format_long_name="QuickTime / MOV"
format.start_time="0.000000"
format.duration="52.209000"
format.size="4372373"
format.bit_rate="669979"
format.probe_score=100
format.tags.major_brand="isom"
format.tags.minor_version="512"
format.tags.compatible_brands="isomiso2avc1mp41"
format.tags.creation_time="1970-01-01T00:00:00.000000Z"
format.tags.title="Sintel Trailer"
format.tags.artist="Durian Open Movie Team"
format.tags.encoder="Lavf52.62.0"
format.tags.copyright="(c) copyright Blender Foundation | durian.blender.org"
format.tags.description="Trailer for the Sintel open movie project"

ini

[format]
filename=D\:\\sintel_trailer-480p.mp4
nb_streams=2
nb_programs=0
format_name=mov,mp4,m4a,3gp,3g2,mj2
format_long_name=QuickTime / MOV
start_time=0.000000
duration=52.209000
size=4372373
bit_rate=669979
probe_score=100

[format.tags]
major_brand=isom
minor_version=512
compatible_brands=isomiso2avc1mp41
creation_time=1970-01-01T00\:00\:00.000000Z
title=Sintel Trailer
artist=Durian Open Movie Team
encoder=Lavf52.62.0
copyright=(c) copyright Blender Foundation | durian.blender.org
description=Trailer for the Sintel open movie project

json

"format": {
    "filename": "C:\\sintel_trailer-480p.mp4",
    "nb_streams": 2,
    "nb_programs": 0,
    "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
    "format_long_name": "QuickTime / MOV",
    "start_time": "0.000000",
    "duration": "52.209000",
    "size": "4372373",
    "bit_rate": "669979",
    "probe_score": 100,
    "tags": {
        "major_brand": "isom",
        "minor_version": "512",
        "compatible_brands": "isomiso2avc1mp41",
        "creation_time": "1970-01-01T00:00:00.000000Z",
        "title": "Sintel Trailer",
        "artist": "Durian Open Movie Team",
        "encoder": "Lavf52.62.0",
        "copyright": "(c) copyright Blender Foundation | durian.blender.org",
        "description": "Trailer for the Sintel open movie project"
    }
}

xml

<format filename="C:\sintel_trailer-480p.mp4" nb_streams="2" nb_programs="0" format_name="mov,mp4,m4a,3gp,3g2,mj2" format_long_name="QuickTime / MOV" start_time="0.000000" duration="52.209000" size="4372373" bit_rate="669979" probe_score="100">
    <tag key="major_brand" value="isom"/>
    <tag key="minor_version" value="512"/>
    <tag key="compatible_brands" value="isomiso2avc1mp41"/>
    <tag key="creation_time" value="1970-01-01T00:00:00.000000Z"/>
    <tag key="title" value="Sintel Trailer"/>
    <tag key="artist" value="Durian Open Movie Team"/>
    <tag key="encoder" value="Lavf52.62.0"/>
    <tag key="copyright" value="(c) copyright Blender Foundation | durian.blender.org"/>
    <tag key="description" value="Trailer for the Sintel open movie project"/>
</format>

フレーム (frame)

  • PTS (packet Presentation TimeStamp)
  • DTS (packet Decoding TimeStamp)

-show_frames

-show_framesで、フレームの情報として画像のExifなどを取得できます。

ffprobe -show_frames sample.jpg

-skip_frame

-skip_frameで、フレームの型によって処理対象から除外できます。

放棄するフレーム
none なし
default サイズが0のような、使用されていないフレーム
noref すべての参照されていないフレーム
bidir すべてのBフレーム
nokey すべての、キーフレーム以外のフレーム
nointra すべての、Iフレーム以外のフレーム
all すべてのフレーム

たとえばすべてのIフレームの位置とその型の情報だけを取得するには、次のようにします。

ffprobe -select_streams v -skip_frame nointra -show_frames -show_entries frame=pkt_pts_time,pict_type sample.mp4

フレームの画像の型 (pict_type)

  • I … Iフレーム (Intra coded frame)
  • P … Pフレーム (Predicted frame)
  • B … Bフレーム (Bidirectional predicted picture)
  • S (switch frame)
  • SI (switching I frame)
  • SP (switching P frame)
  • BI (special intra frame)
Video compression picture types - Wikipedia
複数のダウンロードサイトから、まとめて検索