広告 iPhone、PC 関連

動画・音声のビットレート変動を可視化|plotbitrate CLIのインストールと使い方(CSV出力対応)

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 を利用するための環境

  1. Python 3.6 以降がインストールされていることが必要です。 M1 MacBook の場合、Python 3 が既にインストールされているため、追加の作業は不要です。
  2. 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

[ 音声用オプション : -s audio ]

 bash
plotbitrate -s audio  "audio file" 

例:Flacフォーマットの音声ファイル
Fig-2

 

ビットレートデータを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)からセル計算によりビットレートに変換することも可能なので、ビットレート変動グラフを表示させることもできます。

iMovie・動画ファイルのCSVをグラフ化
Fig-3

平均:15,374Byte ピーク:192,401Byte

Flac・音声ファイルのCSVをグラフ化
Fig-4

平均:2,475Byte ピーク:3,686Byte

 

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フレームが多く含まれていると考えられます。

Fig-3にIフレームを重ね合わせたグラフ

 

plotbitrateを使って【マトメ】

これまで、macOSショートカットを活用し、ffprobe CLIを用いて音声ファイルの解析処理を行って、ビットレート変動のグラフ化を行っていました。(記事:ここをクリック)  今回、plotbitrate CLIを使ってみて、動画・音声ファイルが簡単にビットレートグラフ表示やCSV形式での出力が行え、特筆すべきは、処理時間も高速(3倍程度)になることから、plotbitrate CLIに切替える予定です。 

 

以上、plotbitrate CLIのインストールと使い方の紹介でした。 次回は、plotbitrateによる音声・動画ファイルのビットレート変動を自動的に可視化するmacOSショートカットのクイックアクションを紹介したいと思います。

 

スポンサーリンク