
Pythonベースのコマンドラインツール「plotbitrate CLI」は、ffprobeを利用して、フレーム単位のビットレート情報を取得し、グラフ表示やCSV形式での出力を簡単に行うことができます。 特に、出力したCSVデータを NumbersやExcelでグラフ化・統計解析することで、より詳細なビットレートの挙動を分析できる点が大きな特徴です。
本記事では、plotbitrate CLIのインストール方法から基本的な使い方、CSV出力の活用方法までを分かりやすく解説します。
使用PC環境:M1 MacBook Air (Tahoe 26.3.1 )
plotbitrate CLIについて(Python・ffprobe環境)
公開元
plotbitrateは、GitHubで公開されているソフトウェアで、作者はEric Work氏、リポジトリはzeroepochアカウントで管理されています。 なお、plotbitrateは無料で利用できますが、商用利用や再配布については公開元のライセンスをご確認ください。
公開サイト:https://github.com/zeroepoch/plotbitrate
plotbitrate を利用するための環境
- Python 3.6 以降がインストールされていることが必要です。 M1 MacBook の場合、Python 3 が既にインストールされているため、追加の作業は不要です。
- FFmpegのffprobeを利用しているので、FFmpegがインストールされていることが必要です。 Homebrewを使ってインストールする方法:こちらの記事を参考にしてください。
ポイント
ターミナルを開いて、以下のコマンドでインストール済みであることを確認してください。
command Python3がインストールされているか?:which Python3 → /usr/bin/Python3 Python3のバージョンは?: Python3 --version → Python 3.9.6 FFmpegがインストールされているか?:which FFmpeg → /opt/homebrew/bin/FFmpeg FFmpegのバージョンは?: ffmpeg -version → ffmpeg version 5.1 //以下略
plotbitrate CLIのインストール
ターミナルを開いて、 pip3 install plotbitrate を実行してインストールします。
インストールが終了したら、以下のshowコマンドでインストール済みであることを確認してください。
command pip3 show plotbitrat を実行 ↓↓↓↓ Name: plotbitrate Version: 1.1.3.0 Summary: A simple bitrate plotter for media files Home-page: https://github.com/zeroepoch/plotbitrate Author: Eric Work Author-email: work.eric@gmail.com License: BSD Location: /Users/○○/Library/Python/3.9/lib/python/site-packages Requires: pyqt6, matplotlib
plotbitrate CLIのパスについて
Location:から、plotbitrate CLIのパスは、 /Users/○○/Library/Python/3.9/lib/python/plotbitrate になります。
plotbitrate CLIの使い方|グラフ表示とCSV出力の方法
plotbitrate CLIは、動画および音声ファイルのビットレート変動グラフを簡便に描画するコマンドラインツールです。 さらに、ビットレートデータをCSV形式でエクスポートし、Numbers(Excel)など表計算ソフトで詳細なビットレート変動のグラフ化や統計データの分析が可能です。
plotbitrate CLIを使うには、ターミナルを開き、必要なオプション(黄色文字)を付記してplotbitrate コマンドを実行します。 (ターミナルの設定で、bashにする方が無難です。)
ビットレート変動グラフを描画
bash # plotbitrateのパスを事前に設定しておくことで、フルパスでplotbitrateを指定する必要がなくなります。export PATH="/Users/○○/Library/Python/3.9/bin/:$PATH" # plotbitrateは内部でffprobeを使うので、FFmpegのパスを指定します。 このコマンドはbashにパスが通っていれば不要です。 export PATH="/opt/homebrew/bin:$PATH"
[ 動画用オプション : -s video ]
bash plotbitrate -s video "video file" # 動画の場合は、-s video オプションは不要です。
例:iMovieの動画ファイル
Fig-1
ビットレートデータをCSV形式で保存
CSV形式で保存するには、 -f csv_raw -o "OUT.csv" を追記します。 OUT.csvは出力先の拡張子を.csvにしてフルパスでファイル名を指定します。
bash #動画ファイルの場合 plotbitrate -s video "video file" -f csv_raw -o "OUT.csv" #音声ファイルの場合 plotbitrate -s audio "audio file" -f csv_raw -o "OUT.csv"
CSVファイルは、フレーム単位で以下の内容で保存されます。
(timeはsec、sizeはByte、pict_typeは動画フレームの種類)
動画ファイルの場合
| time | size | pict_type |
| 0 | 1039 | I |
| 0.060678 | 71 | B |
| 0.077367 | 119 | B |
| 0.094044 | 574 | P |
| 0.110733 | 211 | B |
| 0.127411 | 313 | B |
| 0.1441 | 1903 | P |
| // 以下略 | ||
音声ファイルの場合
| time | size | pict_type |
| 0 | 14 | ? |
| 0.026122 | 14 | ? |
| 0.052245 | 14 | ? |
| 0.078367 | 14 | ? |
| 0.10449 | 14 | ? |
| 0.130612 | 14 | ? |
| 0.156735 | 14 | ? |
| // 以下略 | ||
CSVデータの活用|Numbers・Excelでのグラフ化と解析
動画ファイルをplotbitrate CLIを用いてCSV形式でエクスポートすると、以下に示すメリットが得られます。
Merit
1 フレーム毎の転送サイズ(Byte)の変動を詳細に表示可能
plotbitrate -s video “video file” コマンドを用いて描画されたFig-1のビデオファイルのビットレート変動は、1秒単位のグラフで表示されるため、分解能が低いという欠点があります。
一方、CSVデータ(timeとsize)を活用することで、Numbers(又はExcel)の散布図からフレーム毎の転送サイズ(Byte)の変動を、高分解能で容易に可視化することができます(Fig-3)。 転送サイズの変動はビットレート変動と相関するため、グラフの形状はフレーム単位のビットレートと相似し、ビットレート変動のパターンを把握する有効な手段です。 なお、転送サイズ(Byte)からセル計算によりビットレートに変換することも可能なので、ビットレート変動グラフを表示させることもできます。
Merit
2 フレームタイプ別に表示できる
CSVデータのpict_typeは、映像フレームの種類を示します。 映像フレームは、GOP(Group of Pictures)と言われる映像圧縮で使われる「フレームのまとまり(グループ)」のことで、主に3種類のフレームで構成されています。 一方の音声ファイルにはpict_typeのデータはありません。
- Iフレーム(Intra): 単体で完結した画像(基準となるフレームで「Iから次のIまで」が1つのGOP)
- Pフレーム(Predicted): 前のフレームとの差分だけを記録
- Bフレーム(Bidirectional): 前後のフレームとの差分を使う(最も効率的)
Fig-3は、iMovie・動画ファイルのCSVデータでグラフ化しています。 今度は、pict_typeのIフレームでフィルタをかけてグラフ化したのが、下図になります。 この図から、Fig-3 に多く含まれているスパイク状のパターンが、Iフレームに対応していることが確認できました。 iMovieで出力されたビデオファイルは、画像編集を容易にするため、Iフレームが多く含まれていると考えられます。
plotbitrateを使って【マトメ】
これまで、macOSショートカットを活用し、ffprobe CLIを用いて音声ファイルの解析処理を行って、ビットレート変動のグラフ化を行っていました。(記事:ここをクリック) 今回、plotbitrate CLIを使ってみて、動画・音声ファイルが簡単にビットレートグラフ表示やCSV形式での出力が行え、特筆すべきは、、処理時間も高速(3倍程度)になることから、plotbitrate CLIに切替える予定です。




