feat(transcoding): add FFmpeg HLS transcoding support
- Introduced `TranscodeManager` for managing on-demand transcoding of local video files. - Added configuration options for transcoding in `Config` and `LocalFilesConfig`. - Implemented new API routes for managing transcoding settings, stats, and cache. - Updated `LocalFilesProvider` to support transcoding capabilities. - Created frontend components for managing transcode settings and displaying stats. - Added database migration for transcode settings. - Enhanced existing routes and DTOs to accommodate new transcoding features.
This commit is contained in:
@@ -12,6 +12,8 @@ import type {
|
||||
SeriesResponse,
|
||||
LibraryItemResponse,
|
||||
MediaFilter,
|
||||
TranscodeSettings,
|
||||
TranscodeStats,
|
||||
} from "@/lib/types";
|
||||
|
||||
const API_BASE =
|
||||
@@ -155,6 +157,24 @@ export const api = {
|
||||
request<{ items_found: number }>("/files/rescan", { method: "POST", token }),
|
||||
},
|
||||
|
||||
transcode: {
|
||||
getSettings: (token: string) =>
|
||||
request<TranscodeSettings>("/files/transcode-settings", { token }),
|
||||
|
||||
updateSettings: (data: TranscodeSettings, token: string) =>
|
||||
request<TranscodeSettings>("/files/transcode-settings", {
|
||||
method: "PUT",
|
||||
body: JSON.stringify(data),
|
||||
token,
|
||||
}),
|
||||
|
||||
getStats: (token: string) =>
|
||||
request<TranscodeStats>("/files/transcode-stats", { token }),
|
||||
|
||||
clearCache: (token: string) =>
|
||||
request<void>("/files/transcode-cache", { method: "DELETE", token }),
|
||||
},
|
||||
|
||||
schedule: {
|
||||
generate: (channelId: string, token: string) =>
|
||||
request<ScheduleResponse>(`/channels/${channelId}/schedule`, {
|
||||
|
||||
@@ -93,6 +93,16 @@ export interface ProviderCapabilities {
|
||||
search: boolean;
|
||||
streaming_protocol: StreamingProtocol;
|
||||
rescan: boolean;
|
||||
transcode: boolean;
|
||||
}
|
||||
|
||||
export interface TranscodeSettings {
|
||||
cleanup_ttl_hours: number;
|
||||
}
|
||||
|
||||
export interface TranscodeStats {
|
||||
cache_size_bytes: number;
|
||||
item_count: number;
|
||||
}
|
||||
|
||||
export interface ProviderInfo {
|
||||
|
||||
Reference in New Issue
Block a user