You've already forked immich
							
							
				mirror of
				https://github.com/immich-app/immich.git
				synced 2025-10-31 00:18:28 +02:00 
			
		
		
		
	fix(server): use libopus for transcoding (#4102)
* updated audio codec enum * added migration * updated api * fixed enum * formatting * simplified migration
This commit is contained in:
		
							
								
								
									
										2
									
								
								cli/src/api/open-api/api.ts
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								cli/src/api/open-api/api.ts
									
									
									
										generated
									
									
									
								
							| @@ -752,7 +752,7 @@ export type AssetTypeEnum = typeof AssetTypeEnum[keyof typeof AssetTypeEnum]; | ||||
| export const AudioCodec = { | ||||
|     Mp3: 'mp3', | ||||
|     Aac: 'aac', | ||||
|     Opus: 'opus' | ||||
|     Libopus: 'libopus' | ||||
| } as const; | ||||
| 
 | ||||
| export type AudioCodec = typeof AudioCodec[keyof typeof AudioCodec]; | ||||
|   | ||||
							
								
								
									
										6
									
								
								mobile/openapi/lib/model/audio_codec.dart
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								mobile/openapi/lib/model/audio_codec.dart
									
									
									
										generated
									
									
									
								
							| @@ -25,13 +25,13 @@ class AudioCodec { | ||||
| 
 | ||||
|   static const mp3 = AudioCodec._(r'mp3'); | ||||
|   static const aac = AudioCodec._(r'aac'); | ||||
|   static const opus = AudioCodec._(r'opus'); | ||||
|   static const libopus = AudioCodec._(r'libopus'); | ||||
| 
 | ||||
|   /// List of all possible values in this [enum][AudioCodec]. | ||||
|   static const values = <AudioCodec>[ | ||||
|     mp3, | ||||
|     aac, | ||||
|     opus, | ||||
|     libopus, | ||||
|   ]; | ||||
| 
 | ||||
|   static AudioCodec? fromJson(dynamic value) => AudioCodecTypeTransformer().decode(value); | ||||
| @@ -72,7 +72,7 @@ class AudioCodecTypeTransformer { | ||||
|       switch (data) { | ||||
|         case r'mp3': return AudioCodec.mp3; | ||||
|         case r'aac': return AudioCodec.aac; | ||||
|         case r'opus': return AudioCodec.opus; | ||||
|         case r'libopus': return AudioCodec.libopus; | ||||
|         default: | ||||
|           if (!allowNull) { | ||||
|             throw ArgumentError('Unknown enum value to decode: $data'); | ||||
|   | ||||
| @@ -5318,7 +5318,7 @@ | ||||
|         "enum": [ | ||||
|           "mp3", | ||||
|           "aac", | ||||
|           "opus" | ||||
|           "libopus" | ||||
|         ], | ||||
|         "type": "string" | ||||
|       }, | ||||
|   | ||||
| @@ -99,7 +99,7 @@ export enum VideoCodec { | ||||
| export enum AudioCodec { | ||||
|   MP3 = 'mp3', | ||||
|   AAC = 'aac', | ||||
|   OPUS = 'opus', | ||||
|   LIBOPUS = 'libopus', | ||||
| } | ||||
|  | ||||
| export enum TranscodeHWAccel { | ||||
|   | ||||
| @@ -0,0 +1,21 @@ | ||||
| import { MigrationInterface, QueryRunner } from "typeorm"; | ||||
|  | ||||
| export class UpdateOpusCodecToLibopus1694758412194 implements MigrationInterface { | ||||
|   name = 'UpdateOpusCodecToLibopus1694758412194' | ||||
|  | ||||
|   public async up(queryRunner: QueryRunner): Promise<void> { | ||||
|     await queryRunner.query(` | ||||
|                 UPDATE system_config | ||||
|                 SET value = '"libopus"' | ||||
|                 WHERE key = 'ffmpeg.targetAudioCodec' AND value = '"opus"' | ||||
|             `); | ||||
|   } | ||||
|  | ||||
|   public async down(queryRunner: QueryRunner): Promise<void> { | ||||
|     await queryRunner.query(` | ||||
|                 UPDATE system_config | ||||
|                 SET value = '"opus"' | ||||
|                 WHERE key = 'ffmpeg.targetAudioCodec' AND value = '"libopus"' | ||||
|             `); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										2
									
								
								web/src/api/open-api/api.ts
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								web/src/api/open-api/api.ts
									
									
									
										generated
									
									
									
								
							| @@ -752,7 +752,7 @@ export type AssetTypeEnum = typeof AssetTypeEnum[keyof typeof AssetTypeEnum]; | ||||
| export const AudioCodec = { | ||||
|     Mp3: 'mp3', | ||||
|     Aac: 'aac', | ||||
|     Opus: 'opus' | ||||
|     Libopus: 'libopus' | ||||
| } as const; | ||||
| 
 | ||||
| export type AudioCodec = typeof AudioCodec[keyof typeof AudioCodec]; | ||||
|   | ||||
| @@ -145,7 +145,7 @@ | ||||
|             options={[ | ||||
|               { value: AudioCodec.Aac, text: 'aac' }, | ||||
|               { value: AudioCodec.Mp3, text: 'mp3' }, | ||||
|               { value: AudioCodec.Opus, text: 'opus' }, | ||||
|               { value: AudioCodec.Libopus, text: 'opus' }, | ||||
|             ]} | ||||
|             name="acodec" | ||||
|             isEdited={ffmpegConfig.targetAudioCodec !== savedConfig.targetAudioCodec} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user