Featured image of post 内嵌图预留空间移除指南

内嵌图预留空间移除指南

如果在 FLAC 文件中内嵌了错误的封面,或过大的封面,我们不仅需要删除它,还要清除因为它留下的预留空间,因为它会「撑大」FLAC 文件的体积。本文翻译自小红。

如何从 FLAC 文件中正确地移除内嵌图(和预留空间)?

许多流行的标签编辑器,有如 Mp3tag 或 foobar2000,允许从 FLAC 文件移除内嵌图。不过,这些应用并没有连预留空间也一并去除,这就意味着 FLAC 文件的大小并无变化,即使图片已经被移除。

想要正确地完成这项任务,有下列可选项:

  • 将 FLAC 文件解码成 WAV 再重新编码成 FLAC(在此过程中,所有的元数据都会丢失);
  • 从 FLAC 文件移除内嵌图,然后直接再次编码成 FLAC,此操作可使用 foobar2000 完成;
  • 使用 Metaflac 来移除图片、剥离预留空间。

Metaflac

Metaflac 是最为简单快速的方法。你可从 FLAC 官网 下载到适用于所有主流操作系统的 FLAC 包,其中就含有 Metaflac。如果你已经安装了 FLAC,你电脑上应该也已经有 Metaflac 了。

运行它需要用到命令行和以下参数:

1
metaflac --dont-use-padding --remove --block-type=PICTURE,PADDING "YourFile.flac"

如果要处理一个目录下所有的 FLAC 文件,用这个:

1
metaflac --dont-use-padding --remove --block-type=PICTURE,PADDING "Path\To\Your\Folder\*.flac"

Linux 下请确保使用如下句法而非处理整个文件夹:

1
metaflac --dont-use-padding --remove --block-type=PICTURE,PADDING "Path/To/Your/Folder/"*.flac

**注意:**自动通配符扩展(*.flac,出现在上面例子和下面批处理文件中)需要 Metaflac 1.3 或更新版本。若想要同一时间处理多个文件,请确保你拥有待处理文件夹的读/写权限。

Windows 平台下的 Metaflac 自动化批处理文件

如欲更轻松地使用 Metaflac,你可以创建一个批处理文件,如此你就能将其用于将来所有的图片移除工作,而不需要和命令行界面打交道。比方说,一个带有下面内容的简单批处理文件,能将源文件复制到输出目录,然后使用 Metaflac 处理它们。你所需要做的,仅仅只是**将包含了 FLAC 文件的文件夹拖放到批处理文件上**。

1
2
3
4
5
6
7
set metaflac="<path to your metaflac.exe>"
set output="<desired output directory>"
mkdir %output%
copy %1\*.flac %output%
%metaflac% --dont-use-padding --remove --block-type=PICTURE,PADDING "%output%\*.flac"
%metaflac% --add-padding=8192 "%output%\*.flac"
pause

只要将 <path to your metaflac.exe><desired output directory> 换成你的真实路径,比如 C:\Program Files (x86)\FLAC\metaflac.exeC:\Users\User\Desktop\StrippedOutput 即可。

注意:添加进去的 8 KiB 预留空间是为了允许更改元数据而不使文件大小变化,从而免于重写整个 FLAC 的必然需要。

在 foobar2000 中调用 Metaflac

你可借由 foobar2000 的组件 foo_run 来运行 Metaflac。

安装该组件,然后前往「文件」→「参数选项」→「工具」→「Run services」→「Add」。下图是假设你的 metaflac.exe 位于 C:\Program Files (x86)\FLAC\ 的情况下,你应该看到的界面,以及关于如何在 foobar2000 中使用转义括号的说明:

Strip Images and Padding 之类的内容命名之,使用「…」按钮定位你的 metaflac.exe,然后添加参数 --dont-use-padding --remove --block-type=PICTURE,PADDING,然后在后边加上环境变量 %path%。可别忘了用双引号括起来,这是为了避免路径中含有空格所导致的错误。勾选「minimize」选项,然后移动「Simultaneous runs」滑块至最大(这个值设置得小了会限制你单次处理的文件数量)。

现在,如果想要处理 FLAC 文件,你只需要选中所有音轨,右键单击,选择「Run service」→「Strip Images and Padding」。

使用 Mp3tag 查看预留空间的大小(Windows & macOS)

为了处理元数据标签,Mp3tag 具有相当多的功能。同时,由于这些功能,它能够以 KB 为单位显示预留空间。在格式上并无什么限制,只要 Mp3tag 支持就行。这是获知文件中预留空间大小的最佳方法。

想要查看 FLAC 预留空间的大小,请按以下步骤操作:

  1. 前往「视图」→「自定义显示列…」中添加「标签」列;
  2. 单击「新建」,在「名称」中将该列命名为「Padding](或任何你觉得方便的名称)。将该列移动到任何你认为方便的位置;
  3. 在「值」字段,复制粘贴代码部分文字,其余字段留空:$div(%_tag_size%,1024)
  4. 勾选「数值型」选框;
  5. 单击「确定」。

现在,就会有一个新的列用于展示预留空间了,单位是 KB。以下是本站所允许的,在无图片嵌入的情况下,「正常」的预留空间大小:

  • FLAC:0、2 到 8;
  • MP3:1、2;
  • AAC:0。

大于上述示例的任意值都显示了封面图或是其他图片曾经存在过的痕迹。在预留空间刚刚移除且标签尚未更新前,预留空间会显示「0」。更新标签很可能会使之增加到 2 至 8 KB 之间的无内嵌图标准值(EAC 编码的 FLAC 有 4 KB)。不过,在更新标签后依然看到 0 也是有可能的。如果该数值大于等于 1025,就显得「喧宾夺主」了。

FLAC 文件部分可能值的截图:

修复预留空间后的截图:

请注意,MP3 和 AAC 并无与 FLAC 预留空间相同的问题。所以,只要你用 Mp3tag 移除了内嵌图,其预留空间就应回归正常。

Written by ZexWoo. All rights reserved.
主题 StackJimmy 设计 | 使用 Hugo 搭建