types.ts
⎇
Raw
1export interface Metadata {
2 duration: number;
3 trackNumber?: number;
4 title?: string;
5 artist?: string;
6 album?: string;
7 genre?: string[];
8 audioCodec?: string;
9 audioBitrate?: number;
10 videoCodec?: string;
11 videoBitrate?: number;
12 container?: string;
13}
14
15export interface IsVideoResponse {
16 isVideo: boolean;
17}
18
19export interface MediaFile {
20 metadata: Metadata;
21}
22
23export interface Directory {
24 files: FileListing;
25}
26
27//Scanned = we know which children exist
28//Unknown = either:
29// - not scanned (is a subdirectory and recursive=false)
30// - only partially exists, because some deeper file was scannend, and this entry only exists as a link
31export interface DirectoryWithStatus {
32 files: FileListingWithStatus;
33 status: "Scanned" | "Unknown";
34}
35
36export type FileListing = Map<string, Directory | MediaFile>;
37export type FileListingWithStatus = Map<string, DirectoryWithStatus | MediaFile>;
38
39export enum MediaContainer {
40 mp4 = "mp4",
41 webm = "webm",
42 mp3 = "mp3",
43 ogg = "ogg",
44}
45
46export enum VideoCodec {
47 none = "none",
48 av1 = "av1",
49 h264 = "h264",
50 h265 = "h265",
51 vp9 = "vp9",
52}
53
54export enum AudioCodec {
55 opus = "opus",
56 aac = "aac",
57 vorbis = "vorbis",
58 mp3 = "mp3",
59}
60
61export enum VideoEncodingSetting {
62 veryfast = "veryfast",
63 fast = "fast",
64 balanced = "balanced",
65 quality = "quality",
66}
67