28 lines
850 B
TypeScript
28 lines
850 B
TypeScript
import { simpleStreamingEnabled } from './config';
|
|
import { MockMediaProvider } from './providers/mock';
|
|
import type { MediaProvider, MediaSessionCreateInput, MediaSessionCreateResult } from './types';
|
|
|
|
const providerName = (process.env.MEDIA_PROVIDER ?? 'mock').toLowerCase();
|
|
|
|
const createProvider = (): MediaProvider => {
|
|
switch (providerName) {
|
|
case 'mock':
|
|
return new MockMediaProvider();
|
|
default:
|
|
throw new Error(`Unsupported MEDIA_PROVIDER: ${providerName}`);
|
|
}
|
|
};
|
|
|
|
export const mediaProvider = createProvider();
|
|
export const mediaProviderRuntimeEnabled = !simpleStreamingEnabled;
|
|
|
|
export const createLiveMediaSession = async (
|
|
input: MediaSessionCreateInput,
|
|
): Promise<MediaSessionCreateResult | null> => {
|
|
if (!mediaProviderRuntimeEnabled) {
|
|
return null;
|
|
}
|
|
|
|
return mediaProvider.createSession(input);
|
|
};
|