From 08fd5bc592f403cf34a101adbd419630141118c8 Mon Sep 17 00:00:00 2001 From: exu Date: Fri, 10 May 2024 19:20:54 +0200 Subject: [PATCH] Handle metadata copying for opus files --- music-normalize/main.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/music-normalize/main.py b/music-normalize/main.py index 361c7beb..ffee0886 100755 --- a/music-normalize/main.py +++ b/music-normalize/main.py @@ -128,8 +128,16 @@ def ffmpeg_copy_metadata(inputfile: str, outputfile: str): with tempfile.NamedTemporaryFile() as temp_audio: shutil.copyfile(outputfile, temp_audio.name) + # get input file extension + extension = os.path.splitext(os.path.basename(inputfile))[1] + inputcmd = {inputfile: None, temp_audio.name: None} - outputcmd = {outputfile: "-map 1 -c copy -map_metadata 0"} + + # NOTE opus maps metadata to the first audio stream. Other formats like flac, mp3 and m4a/aac by contrast map it to the input directly + if extension == ".opus": + outputcmd = {outputfile: "-map 1 -c copy -map_metadata 0:s"} + else: + outputcmd = {outputfile: "-map 1 -c copy -map_metadata 0"} ff = ffmpy.FFmpeg(inputs=inputcmd, outputs=outputcmd, global_options=("-y"))