import type * as mediasoup from 'mediasoup' import fp from 'fastify-plugin' declare module 'fastify' { interface FastifyInstance { mediasoupRouter: mediasoup.types.Router } } export default fp( async (fastify, opts) => { const router = await fastify.mediasoupWorker.createRouter(opts) fastify.decorate('mediasoupRouter', router) }, { name: 'mediasoup-router', dependencies: ['mediasoup-worker'] }, ) export const autoConfig: mediasoup.types.RouterOptions = { mediaCodecs: [ { kind: 'audio', mimeType: 'audio/opus', clockRate: 48000, channels: 2, parameters: { useinbandfec: 1, stereo: 1 }, }, { kind: 'video', mimeType: 'video/VP8', clockRate: 90000, parameters: { 'x-google-start-bitrate': 1000, }, }, { kind: 'video', mimeType: 'video/VP9', clockRate: 90000, parameters: { 'profile-id': 2, 'x-google-start-bitrate': 1000, }, }, { kind: 'video', mimeType: 'video/h264', clockRate: 90000, parameters: { 'packetization-mode': 1, 'profile-level-id': '4d0032', 'level-asymmetry-allowed': 1, 'x-google-start-bitrate': 1000, }, }, { kind: 'video', mimeType: 'video/h264', clockRate: 90000, parameters: { 'packetization-mode': 1, 'profile-level-id': '42e01f', 'level-asymmetry-allowed': 1, 'x-google-start-bitrate': 1000, }, }, { kind: 'video', mimeType: 'video/AV1', clockRate: 90000, parameters: {}, }, ], }