mirror of
https://github.com/chrisbenincasa/tunarr.git
synced 2026-04-18 09:03:35 -04:00
51 lines
1.6 KiB
TypeScript
51 lines
1.6 KiB
TypeScript
import { FfprobeStreamDetails } from '@/stream/FfprobeStreamDetails.js';
|
|
import type { RouterPluginAsyncCallback } from '@/types/serverType.js';
|
|
import { z } from 'zod/v4';
|
|
import { container } from '../../container.ts';
|
|
import type { FfmpegEncoder } from '../../ffmpeg/ffmpegInfo.ts';
|
|
import { FfmpegInfo } from '../../ffmpeg/ffmpegInfo.ts';
|
|
|
|
export const debugFfmpegApiRouter: RouterPluginAsyncCallback = async (
|
|
fastify,
|
|
// eslint-disable-next-line @typescript-eslint/require-await
|
|
) => {
|
|
fastify.get(
|
|
'/ffmpeg/probe',
|
|
{
|
|
schema: {
|
|
operationId: 'debugFfmpegProbe',
|
|
summary: 'Debug: probe a media file with ffprobe',
|
|
tags: ['Debug'],
|
|
querystring: z.object({
|
|
path: z.string(),
|
|
}),
|
|
},
|
|
},
|
|
async (req, res) => {
|
|
const details = await container
|
|
.get<FfprobeStreamDetails>(FfprobeStreamDetails)
|
|
.getStream({ path: req.query.path });
|
|
return res.send(details);
|
|
},
|
|
);
|
|
|
|
fastify.get('/ffmpeg/capabilities', { schema: { operationId: 'debugFfmpegCapabilities', summary: 'Debug: get full FFmpeg capabilities', tags: ['Debug'] } }, async (_, res) => {
|
|
const info = container.get(FfmpegInfo);
|
|
const capabilities = await info.getCapabilities();
|
|
return res.send({
|
|
options: [...capabilities.allOptions()],
|
|
filters: [...capabilities.allFilters()],
|
|
videoEncoders: capabilities
|
|
.allVideoEncoders()
|
|
.entries()
|
|
.reduce(
|
|
(acc, [key, value]) => {
|
|
acc[key] = value;
|
|
return acc;
|
|
},
|
|
{} as Record<string, FfmpegEncoder>,
|
|
),
|
|
});
|
|
});
|
|
};
|