mirror of
				https://github.com/KevinMidboe/immich.git
				synced 2025-10-29 17:40:28 +00: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