0
Fork 0
mirror of https://github.com/immich-app/immich.git synced 2025-03-11 02:23:09 -05: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:
Mert 2023-09-15 20:52:45 -04:00 committed by GitHub
parent 7fcc5a5417
commit 0a9b632e48
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 29 additions and 8 deletions

View file

@ -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];

View file

@ -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');

View file

@ -5318,7 +5318,7 @@
"enum": [
"mp3",
"aac",
"opus"
"libopus"
],
"type": "string"
},

View file

@ -99,7 +99,7 @@ export enum VideoCodec {
export enum AudioCodec {
MP3 = 'mp3',
AAC = 'aac',
OPUS = 'opus',
LIBOPUS = 'libopus',
}
export enum TranscodeHWAccel {

View file

@ -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"'
`);
}
}

View file

@ -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];

View file

@ -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}