オーディオ・動画プログラミングでの時間表現

コンピュータ上で時間を表す方法は複数あります。C言語のプログラミングで時間というと真っ先に浮かぶのは「time_t」型で取得できる「エポックタイム」です。「Unix秒」などとも呼びます。

エポックタイムはUTC (世界協定時) で1970年1月1日0時0分0秒からの経過秒数です。プログラミングで扱うのも感覚的に分かりやすいです。

ただ、オーディオ・動画のプログラミングで扱うのには不向きです。

オーディオや動画では、1秒というのはとても長い時間です。例えば、ハイレゾオーディオの96KHzというサンプリングレートは、1秒間96000個のデータがあります。個々のデータの間隔は 1 / 96000 = 0.000010416666667秒 = 約0.01ミリ秒です。

このような時間を表すため、オーディオや動画のプログラミングではフレームワークによって多少違いますが、次のような形で時間を表します。

タイム値(データのインデックス) / タイムスケール

例えば、96KHzのオーディオで1秒は次のように表します。

96000 / 96000

この表現方式であれば、データ数が時間も表せます。人間の感覚で分かりやすいように一度秒に直すというようなコードを書いてしまうと、2つの音や動画を位置合わせするときにはどうしてもズレが出ます。情報の精度が全く違うので。オーディオや動画のプログラミングでは秒を直接扱わない、表示するときだけ変換するようにします。

スポンサーリンク
最新情報をチェックしよう!

Audioの最新記事8件

>現役のプログラマーが書くプログラミング情報

現役のプログラマーが書くプログラミング情報

日々の開発の中での学びや分かったこと、調べたことなどを書いていくブログです。

CTR IMG