Runner in the High

技術のことをかくこころみ

m4a(mp4)におけるFPS計算

FPSググると動画の話ばっかり出てくるが、デコーダを扱うには音声でも秒間フレームサイズが知りたくなることがある。

「秒間」というくらいなので、まずはm4a(mp4)における再生時間データを計算する方法が必要。以下の式がそれにあたる。DurationもTimescaleもどちらもmdhdというBoxに格納されていて、計算結果は秒数で出る。

再生時間 = トラックの長さ(Duration) / トラックのタイムスケール(Timescale)

あとは上で計算されたデータでstszに格納されているフレームの総数を割るだけでいい。

FPS = フレーム数(stsz) / 再生時間

ここまで計算できれば「時間あたりmdat上のバイナリサイズがどれくらいか」なども出せるようになるので、たとえば「m4aファイルから時間指定のオフセットで90秒分だけwavデコードする」などの処理も実装できるようになる。