FFMPEG-NORMALIZE 无法识别音频名称文件中的特殊字符

FFMPEG-NORMALIZE 无法识别音频名称文件中的特殊字符

当我运行 ffmpeg-normalize 时,它​​会显示输入音频的名称,并用代码代替特殊字符,如下所示:

命令:

ffmpeg-normalize "Barão Vermelho - Agora Tudo Acabou.mp3" -nt ebu -t -10 -tp -0.5 -c:a mp3 -b:a 320k -ar 44100 --extra-output-options "-c:v copy -id3v2_version 3 -metadata:s:v title=""Album cover"" -metadata:s:v comment=""Cover (front)""" -o "C:\Users\%username%\Desktop\Converting_lufs\Barão Vermelho - Agora Tudo Acabou_normalized.mp3" -p

命令输出:

[
    {
        "input_file": "Bar\u00e3o Vermelho - Agora Tudo Acabou.mp3",
        "output_file": "C:\\Users\\CMG\\Desktop\\Converting_lufs\\Bar\u00e3o Vermelho - Agora Tudo Acabou_normalized.mp3",
        "stream_id": 0,
        "ebu": {
            "input_i": -7.22,
            "input_tp": 1.49,
            "input_lra": 3.5,
            "input_thresh": -17.35,
            "output_i": -9.34,
            "output_tp": -0.5,
            "output_lra": 2.3,
            "output_thresh": -19.42,
            "normalization_type": "dynamic",
            "target_offset": -0.66
        },
        "mean": null,
        "max": null
    }
]

注意命令中输入的音频文件名是:
Barão Vermelho - Agora Tudo Acabou.mp3

并且在命令输出显示中显示:
Bar\u00e3o Vermelho - Agora Tudo Acabou.mp3对于输入和输出文件。

特殊字符ã, 被替换为\u00e3

当我在不使用 ffmpeg-normalize 的情况下运行规范化时,它不起作用,如下所示:

命令:

ffmpeg -hide_banner -i "Barão Vermelho - Agora Tudo Acabou.mp3" -af "loudnorm=linear=true:I=-10:LRA=11:tp=-0.5:measured_I=I:measured_LRA=LRA:measured_tp=TP:measured_thresh=TT:offset=TO:print_format=summary" -c:v copy -id3v2_version 3 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)" -acodec mp3 -b:a 320k -ar:a 44100 "C:\Users\%username%\Desktop\Converting_lufs\Barão Vermelho - Agora Tudo Acabou_normalized.mp3"

命令输出:

Input #0, mp3, from 'Barão Vermelho - Agora Tudo Acabou.mp3':
  Metadata:
    title           : Agora Tudo Acabou
    artist          : Barão Vermelho
    comment         :
    album           : CMG Clássicos Pop Rock Nacionais
    genre           : Clássico Pop Rock Nacional
    date            : 1987
    encoder         : Lavf59.6.100
  Duration: 00:03:33.31, start: 0.023021, bitrate: 320 kb/s
  Stream #0:0: Audio: mp3, 48000 Hz, stereo, fltp, 320 kb/s
    Metadata:
      encoder         : Lavc59.12
Stream mapping:
  Stream #0:0 -> #0:0 (mp3 (mp3float) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help

Output #0, mp3, to 'C:\Users\CMG\Desktop\Converting_lufs\Barão Vermelho - Agora Tudo Acabou_normalized.mp3':
  Metadata:
    TIT2            : Agora Tudo Acabou
    TPE1            : Barão Vermelho
    comment         :
    TALB            : CMG Clássicos Pop Rock Nacionais
    TCON            : Clássico Pop Rock Nacional
    TYER            : 1987
    TSSE            : Lavf59.17.102
  Stream #0:0: Audio: mp3, 48000 Hz, stereo, fltp, 320 kb/s

并且在命令输出显示中显示:
Barão Vermelho - Agora Tudo Acabou.mp3输入和输出文件均正确。

另外注意,ffmpeg-normalize 中的输出文件路径包含\\两个斜杠,而不使用 ffmpeg-normalize 的输出文件路径仅包含\一个斜杠。

ffmpeg-normalize 不能识别特殊字符吗?

答案1

FFmpeg-normalize 确实可以识别特殊字符,但是数据输出方式不支持此类特殊字符。

FFmpeg-normalize 将 Loudnorm 过滤器第一遍的输出显示为 JSON。您看到的特殊字符和单个反斜杠位置是 JSON 转义序列。


特殊字符 ã, 替换为 \u00e3

由于ã不是 ASCII 字符,因此必须对其进行转义,因为有效的 JSON 不能包含非 ASCII 字符。反斜杠 ( \) 字符用于表示转义序列的开始,而u表示 Unicode 转义序列。接下来是字符的 UTF-16 编码,00E3这样您就可以\u00E3在输出中看到 。

另外注意,ffmpeg-normalize 中输出文件的路径包含 \ 两个斜杠,而未使用 ffmpeg-normalize 的输出文件路径仅包含 \ 一个斜杠。

由于反斜杠字符用于启动转义序列,因此它不能正常使用,如果希望在字符串中使用反斜杠,则必须将其本身转义。反斜杠用双反斜杠 ( \\)进行转义

相关内容