feat(media): add phase5 media provider abstraction and stream credentials APIs

This commit is contained in:
2026-01-19 16:55:00 +00:00
parent f66b5ad15d
commit b800baefb2
8 changed files with 311 additions and 67 deletions

44
Backend/media/types.ts Normal file
View File

@@ -0,0 +1,44 @@
export type MediaSessionCreateInput = {
streamSessionId: string;
ownerUserId: string;
cameraDeviceId: string;
requesterDeviceId: string;
};
export type MediaPublishCredentials = {
provider: string;
mediaSessionId: string;
publishToken: string;
publishUrl: string;
expiresInSeconds: number;
};
export type MediaSubscribeCredentials = {
provider: string;
mediaSessionId: string;
subscribeToken: string;
subscribeUrl: string;
expiresInSeconds: number;
};
export type MediaSessionCreateResult = {
provider: string;
mediaSessionId: string;
publishUrl: string;
subscribeUrl: string;
};
export interface MediaProvider {
name: string;
createSession(input: MediaSessionCreateInput): Promise<MediaSessionCreateResult>;
issuePublishCredentials(input: {
mediaSessionId: string;
cameraDeviceId: string;
ownerUserId: string;
}): Promise<MediaPublishCredentials>;
issueSubscribeCredentials(input: {
mediaSessionId: string;
viewerDeviceId: string;
ownerUserId: string;
}): Promise<MediaSubscribeCredentials>;
}