Azure Kinect Sensor SDK を使用してファイル形式を記録する

センサー データを記録するために、Matroska (.mkv) コンテナー形式が使用されます。この形式では、幅広いコーデックを使用して複数のトラックを格納できます。 記録ファイルには、カラー、深度、IR 画像と IMU を格納するためのトラックが含まれています。

.mkv コンテナー形式の低レベルの詳細については、Matroska の Web サイトを参照してください。

トラック名 コーデック形式
COLOR モードによって異なる (MJPEG、NV12、または YUY2)
DEPTH b16g (16 ビット グレースケール、ビッグ エンディアン)
IR b16g (16 ビット グレースケール、ビッグ エンディアン)
IMU カスタム構造。後の「IMU のサンプル構造」を参照してください。

サード パーティ製ツールの使用

MKVToolNix ツールキットの ffmpeg または mkvinfo コマンドなどのツールを使用すると、記録ファイルの情報を表示したり抽出したりできます。

たとえば、次のコマンドは、深度トラックを同じフォルダーへの 16 ビット PNG のシーケンスとして抽出します。

ffmpeg -i output.mkv -map 0:1 -vsync 0 depth%04d.png

-map 0:1 パラメーターは、ほとんどの記録で深度になるトラック インデックス 1 を抽出します。 記録にカラー トラックが含まれていない場合は、-map 0:0 が使用されます。

-vsync 0 パラメーターは、ffmpeg で 30 fps、15 fps、または 5 fps のフレーム レートに一致させるのではなく、強制的にフレームをそのまま抽出するようにします。

IMU のサンプル構造

IMU データが再生 API を使用せずにファイルから抽出された場合、そのデータはバイナリ形式になります。 IMU データの構造を次に示します。 すべてのフィールドがリトル エンディアンです。

フィールド Type
加速度計のタイムスタンプ (µs) uint64
加速度計のデータ (x、y、z) float[3]
ジャイロスコープのタイムスタンプ (µs) uint64
ジャイロスコープのデータ (x、y、z) float[3]

トラックの識別

カラー、深度、IR などがどのトラックに含まれているかを識別することが必要になる場合があります。 トラックの識別は、サード パーティ製ツールを操作して Matroska ファイルを読み取る場合に必要です。 トラック番号は、カメラ モードや有効になっているトラックの組み合わせによって異なります。 タグは、各トラックの意味を識別するために使用されます。

次のタグの一覧はそれぞれ特定の Matroska 要素に添付されており、対応するトラックまたは添付ファイルを検索するために使用できます。

これらのタグは、ffmpegmkvinfo などのツールで表示できます。 タグの完全な一覧は、記録と再生に関するページに一覧表示されています。

タグ名 タグのターゲット タグ値
K4A_COLOR_TRACK カラー トラック Matroska トラック UID
K4A_DEPTH_TRACK 深度トラック Matroska トラック UID
K4A_IR_TRACK IR トラック Matroska トラック UID
K4A_IMU_TRACK IMU トラック Matroska トラック UID
K4A_CALIBRATION_FILE 較正の添付ファイル 添付ファイル名

次のステップ

記録と再生