Self-hosted multi-platform broadcast newsroom for activist collectives: publishing pipeline with group approval and DST-proof scheduling, TweetDeck-style column wall with hostile-content-safe rendering, live control room with Auto Director, bridged chat governance with polls and quorum, distributed sandboxed transcode workers, encrypted content-addressed archive, monthly analytics. MIT licensed. See README.md and docs/.
42 lines
830 B
TypeScript
42 lines
830 B
TypeScript
export interface VideoAsset {
|
|
id: string;
|
|
workspaceId: string;
|
|
storageKey: string;
|
|
mimeType: string;
|
|
sizeBytes: number;
|
|
width?: number;
|
|
height?: number;
|
|
durationMs?: number;
|
|
frameRate?: number;
|
|
codec?: string;
|
|
audioCodec?: string;
|
|
thumbnailKey?: string;
|
|
}
|
|
|
|
export type VideoProcessingJobState =
|
|
| "queued"
|
|
| "probing"
|
|
| "transcoding"
|
|
| "complete"
|
|
| "failed";
|
|
|
|
export interface VideoProcessingJob {
|
|
id: string;
|
|
workspaceId: string;
|
|
videoAssetId: string;
|
|
state: VideoProcessingJobState;
|
|
progressPercent?: number;
|
|
outputKey?: string;
|
|
error?: string;
|
|
}
|
|
|
|
export interface VideoLibraryEntry {
|
|
videoAsset: VideoAsset;
|
|
processingState: VideoProcessingJobState;
|
|
publications: Array<{
|
|
connectionId: string;
|
|
remoteId: string;
|
|
platform: string;
|
|
publishedAt: Date;
|
|
}>;
|
|
}
|