chakkun1121's blog

OTIOに付いて

投稿日:2024/3/14

はじめに

個人で動画編集アプリを作っているときにOTIOというものを知ったのでまとめてみます。

OTIOとは

OTIO(OpenTimelineIO)とは、異なる動画編集アプリ内のタイムラインを共有するためのファイル形式です。拡張子は.otioです。DaVinci Resolveなどに採用されています。

OTIOのファイル形式

OpenTimelineIOのファイル(.otio)の中はJSONとなっています。詳しくは公式ドキュメントを確認してください。

OTIOのtypes

OTIOにはなぜかC++とPythonのライブラリしかなく、typescriptの型定義がありませんでした。そのため非公式で作成しました。

注意事項:このファイルは自由に使ってもらって構いませんが、作成者はこのファイルを使用して発生したことについては一切責任を負いません。

1export type OpenTimelineIO =
2  | OTIO.Timeline
3  | OTIO.Clip
4  | OTIO.Stack
5  | OTIO.Track; //default is Timeline
6export namespace OTIO {
7  export type Timeline = {
8    OTIO_SCHEMA: "Timeline.1";
9    metadata: Metadata;
10    name: string;
11    tracks?: Stack;
12  };
13  export type Clip = {
14    OTIO_SCHEMA: "Clip.1";
15    effects: [];
16    markers: [];
17    metadata: Metadata;
18    name: string;
19    source_range: Object;
20    media_reference: null;
21  };
22  export type Stack = {
23    OTIO_SCHEMA: "Stack.1";
24    children: Track[];
25    effects: [];
26    markers: [];
27    metadata: Metadata;
28    name: string;
29    source_range: null;
30  };
31  export type Track = {
32    OTIO_SCHEMA: "Track.1";
33    children: (Clip | Transition)[];
34    effects: [];
35    kind: string;
36    markers: [];
37    metadata: Metadata;
38    name: string;
39    source_range: null;
40  };
41  export type Transition = {
42    OTIO_SCHEMA: "Transition.1";
43    metadata: Metadata;
44    name: string;
45    transition_type: string;
46    parameters: Object;
47    in_offset: RationalTime;
48    out_offset: RationalTime;
49  };
50  export type RationalTime = {
51    OTIO_SCHEMA: "RationalTime.1";
52    rate: number;
53    value: number;
54  };
55  export type Metadata = {
56    [key: string]: Object;
57  };
58}

最後に

今回はOTIOについて解説しました。個人で動画編集アプリを作っていてそれで使おうとして型定義まで作ったのですが、結局採用しなかったので供養もありこの記事を書きました。