diff --git a/docs/docs/install/config-file.md b/docs/docs/install/config-file.md index b789d8653f..ed902f39cf 100644 --- a/docs/docs/install/config-file.md +++ b/docs/docs/install/config-file.md @@ -19,7 +19,7 @@ The default configuration looks like this: "targetVideoCodec": "h264", "acceptedVideoCodecs": ["h264"], "targetAudioCodec": "aac", - "acceptedAudioCodecs": ["aac", "mp3", "libopus"], + "acceptedAudioCodecs": ["aac", "mp3", "libopus", "pcm_s16le"], "acceptedContainers": ["mov", "ogg", "webm"], "targetResolution": "720", "maxBitrate": "0", diff --git a/mobile/openapi/lib/model/audio_codec.dart b/mobile/openapi/lib/model/audio_codec.dart index ca195f7d06..ea1e96f36e 100644 Binary files a/mobile/openapi/lib/model/audio_codec.dart and b/mobile/openapi/lib/model/audio_codec.dart differ diff --git a/open-api/immich-openapi-specs.json b/open-api/immich-openapi-specs.json index 415cc663f4..b99da367b8 100644 --- a/open-api/immich-openapi-specs.json +++ b/open-api/immich-openapi-specs.json @@ -8507,7 +8507,8 @@ "enum": [ "mp3", "aac", - "libopus" + "libopus", + "pcm_s16le" ], "type": "string" }, diff --git a/open-api/typescript-sdk/src/fetch-client.ts b/open-api/typescript-sdk/src/fetch-client.ts index 2077943bf8..17079c07c3 100644 --- a/open-api/typescript-sdk/src/fetch-client.ts +++ b/open-api/typescript-sdk/src/fetch-client.ts @@ -3501,7 +3501,8 @@ export enum TranscodeHWAccel { export enum AudioCodec { Mp3 = "mp3", Aac = "aac", - Libopus = "libopus" + Libopus = "libopus", + PcmS16Le = "pcm_s16le" } export enum VideoContainer { Mov = "mov", diff --git a/server/src/config.ts b/server/src/config.ts index b79643c501..e386c134b4 100644 --- a/server/src/config.ts +++ b/server/src/config.ts @@ -163,7 +163,7 @@ export const defaults = Object.freeze({ targetVideoCodec: VideoCodec.H264, acceptedVideoCodecs: [VideoCodec.H264], targetAudioCodec: AudioCodec.AAC, - acceptedAudioCodecs: [AudioCodec.AAC, AudioCodec.MP3, AudioCodec.LIBOPUS], + acceptedAudioCodecs: [AudioCodec.AAC, AudioCodec.MP3, AudioCodec.LIBOPUS, AudioCodec.PCMS16LE], acceptedContainers: [VideoContainer.MOV, VideoContainer.OGG, VideoContainer.WEBM], targetResolution: '720', maxBitrate: '0', diff --git a/server/src/enum.ts b/server/src/enum.ts index 157fa0003d..8c11834dac 100644 --- a/server/src/enum.ts +++ b/server/src/enum.ts @@ -278,6 +278,7 @@ export enum AudioCodec { MP3 = 'mp3', AAC = 'aac', LIBOPUS = 'libopus', + PCMS16LE = 'pcm_s16le', } export enum VideoContainer { diff --git a/server/src/services/system-config.service.spec.ts b/server/src/services/system-config.service.spec.ts index 807d8299b8..f81abc4795 100644 --- a/server/src/services/system-config.service.spec.ts +++ b/server/src/services/system-config.service.spec.ts @@ -49,7 +49,7 @@ const updatedConfig = Object.freeze({ threads: 0, preset: 'ultrafast', targetAudioCodec: AudioCodec.AAC, - acceptedAudioCodecs: [AudioCodec.AAC, AudioCodec.MP3, AudioCodec.LIBOPUS], + acceptedAudioCodecs: [AudioCodec.AAC, AudioCodec.MP3, AudioCodec.LIBOPUS, AudioCodec.PCMS16LE], targetResolution: '720', targetVideoCodec: VideoCodec.H264, acceptedVideoCodecs: [VideoCodec.H264], diff --git a/web/src/lib/components/admin-page/settings/ffmpeg/ffmpeg-settings.svelte b/web/src/lib/components/admin-page/settings/ffmpeg/ffmpeg-settings.svelte index c048a22207..42cc004c52 100644 --- a/web/src/lib/components/admin-page/settings/ffmpeg/ffmpeg-settings.svelte +++ b/web/src/lib/components/admin-page/settings/ffmpeg/ffmpeg-settings.svelte @@ -102,6 +102,7 @@ onSelect={() => (config.ffmpeg.acceptedVideoCodecs = [config.ffmpeg.targetVideoCodec])} /> +