在Windows上无痛地将FLAC转换为ALAC?


10

我想知道是否有人有一个干净,轻松的工作流程来将FLAC文件无损地转换为等效的ALAC?它应该是位完美的转换,这意味着它应该不难,但是……。

我为什么要这样做?(在操作系统人员吃我之前)主要是因为我使用的音频应用程序(Serato Scratch Live)不支持FLAC,并且尽管在过去五年中用户不断逼迫,但很可能不会而。但是,他们确实获得了ALAC的支持

同样,似乎很难让iTunes播放FLAC文件(并正确地将其转换为有效使用iPod的空间)。

唯一要注意的是,我想保留一些奇怪的,另类的元标记(BPM和歌曲密钥),这些标记很难重新生成。我在Windows或Linux上遇到任何问题

谢谢

汤姆

Answers:


11

在Ubuntu中,您可以打开一个终端,导航到相关目录,然后执行以下命令循环:

for f in *.flac; do ffmpeg -i "$f" -acodec alac "${f%.flac}.m4a"; done
  • 会将.flac目录中的所有文件转换为.alac文件,以一种完美的方式进行。
  • ffmpeg没有随Ubuntu一起打包,因此您需要从repos中安装它;但是,我不能肯定地说这会保留您的BPM标签信息。

同样,似乎很难让iTunes播放FLAC文件(并正确地将其转换为有效使用iPod的空间)。

有一个名为flukeformac的程序,可以让您.flac在iTunes中播放文件。
对于有效使用iPod的转换,以下命令循环可以解决问题:

for file in *.flac; do $(flac -cd "$file" | lame --preset fast extreme - "${file%.flac}.mp3"); done`
  • 您可能希望--preset fast extreme用较低的比特率选项代替
    更多关于lame预设)

1
一个很好的综合答案。谢谢你
汤姆·科里利斯

我尝试在Windows 10中使用ffmpeg的静态版本,它可以转换acodec alac,但不能转换vcodec h264,尽管h264是受支持的格式ffmpeg --codecs
user1022209

6

对于Windows使用PowerShellffmpeg(基于@boehj答案):

Ls -Recurse -Include *.flac | %{C:\path_to_ffmpeg\ffmpeg.exe -i $_.FullName -acodec alac ($_.DirectoryName+"\\"+$_.BaseName+'.m4a')}


4

对于(Windows)命令行成瘾者:

我已经为Windows版iTunes编写了一个自动化脚本,该脚本以ALAC格式将给定文件夹及其子文件夹中的所有FLAC文件批量导入到iTunes中,并保留了关键的元信息,例如专辑,艺术家和歌曲名称。它需要flac.exemetaflac.exe和字符集转换一个小帮手工具。您可以下载包含这些依赖项的即用型软件包(请参见下文),也可以在GitHub上分叉我的项目。

有关全文,二进制下载,限制等信息,请参阅我的博客文章


2

在Windows中,你可以打开一个命令提示符,然后运行以下命令,将FLAC文件转换为ALAC在同一目录下不同的驱动器(我更喜欢有它的方式)使用上qaaclibFLAC和iTunes:

  1. 将当前工作目录更改为包含您的flac文件的源目录(s:\music此处以示例为例)

  2. 将所有文件夹复制到目标目录,包括带有文件名(folder.(jpg|png|gif))的相册封面文件:

    robocopy "s:\music" "d:\music" folder.jpg folder.png folder.gif /E

    该选项/E包括空目录。如果您不想复制它们,请使用该/S选项。

  3. 用于qaac以“位完美”的方式将该目录中的所有FLAC文件转换为另一驱动器上的ALAC文件,并保留大多数原始元数据:

    FOR /R %I IN (*.flac) DO qaac64 -A --copy-artwork -o "d:%~pI%~nI.m4a" "%I"

    之后插入IF NOT EXIST "d:%~pI%~nI.m4a"上述命令DO将跳过转换目标目录中已经存在的文件。

请注意

  • 源(s:)和目标(d:)驱动器上的目录名称必须相同(否则,您需要修改FOR命令中的变量,qaac不会为您创建目录)
  • 您需要切换到源目录(s:\music在上面的示例中)以使命令起作用
  • 目标目录(d:\music在上面的示例中)应为空,以避免覆盖文件
  • SUBST如果要在同一驱动器上创建ALAC文件,则可以使用命令将目录映射到驱动器号
  • 您必须至少运行2.57的版本,qaac并为Windows版本(32位或64位)使用适当的二进制文件
  • qaac需要在Windows PATH变量中,否则您必须在FOR上面的命令中包含其二进制文件的完整路径
  • qaac 需要安装iTunes或QuickTime才能工作
  • qaac需要libFLAC在其目录中匹配DLL的副本才能读取FLAC文件,您可以在稀有网站上找到它
  • iDevices无法处理采样率超过48,000 kHz且采样大小超过24位的文件(2016年初)。iTunes不允许您将这些文件复制到设备上,并警告您“由于iDevice不支持采样率,因此未复制曲目”。调用qaac这些选项--rate 48000 --bits-per-sample 24可以解决此问题,但请确保仅在实际的高清文件上使用这些选项,因为否则,您会肿所有文件而不会获得任何收益!
  • ALAC文件将缺少Apple iTunes和iDevices依靠其声音检查功能所依赖的音量信息(将歌曲播放音量调节到相同的水平)。可以使用iTunes(仅似乎将音量信息存储在其库中),beaTunes(商业软件),iVolume(商业软件)以及不同平台上的许多其他工具将信息添加到文件中。
  • 这不是同步工作流:第二次运行上述命令会将您添加到源目录的FLAC文件添加到目标目录,但不会使音乐的两个目录保持同步(重命名的文件会导致重复的ALAC文件具有不同的名称,如果您使用的是IF NOT EXIST元数据更改,则不会从目标目录中删除已删除的文件,因为上次运行不会反映在ALAC文件中)

欢迎来到超级用户!感谢您发布如此全面的第一答案。:)
Excellll '16

1

FFmpeg应该能够做到;您将自行找到正确的命令来执行此操作。


这是一篇古老的文章,但实际上,它更多是评论而不是解决方案。请考虑扩大答案。谢谢。
fixer1234 '16


1

有多种方法可以将FLAC转换为ALAC。

  • 在Windows上,可以使用foobar2000和Encoder Pack
  • 在Windows,Linux和Mac上,可以使用PowerShell flacffmpeg

    $folder = "d:\demo"
    
    # Convert flac to wav
    Get-ChildItem -Recurse "$folder\*.flac" | ForEach-Object {
      & C:\tools\flac.exe -d --force --silent $_.FullName
    }
    
    # Convert wav to alac
    Get-ChildItem -Recurse "$folder\*.wav" | ForEach-Object {
      $filename = [System.IO.Path]::ChangeExtension($_.FullName, ".m4a")
      & C:\tools\ffmpeg.exe -hide_banner -loglevel panic -i $_.FullName -acodec alac -sample_fmt s16p $fileName
    }
    
    # Remove wav and flac file
    Get-ChildItem -Recurse "$folder\*.wav" | Remove-Item
    Get-ChildItem -Recurse "$folder\*.flac" | Remove-Item
    

检查我的博客文章以了解更多详细信息:将音乐文件从FLAC转换为ALAC


0

MediaMonkey也可以做到这一点,但是它只会保留BPM标签(我不知道Song Key是这些格式中的标准化标签)。

注意:您需要购买“ MediaMonkey编解码器包”以进行ALAC编码。


0

我将FooBar和iTunesEncode用于其转换器。

  1. 获取iTunesEncode
  2. 转到FooBar>在您的FLAC播放列表中全选>右键单击-转换
  3. 右侧>格式>自定义

    Encode Tool : path to iTunesEncode.exe
    Extension : m4a 
    Parameters : -d -e "Lossless Encoder" -a "%artist%" -l "%album%" -t "%title%" -g "%genre%" -y %date% -n %tracknumber% -i %s -o %d
    Format is: lossless
    next propery : 24
    
    DisplayInfo example :
    "Encoder name" - iTunes
    "Bitrate" - 1000
    "Setting" - Apple Lossless
    
  4. 填写其他参数进行转换>保存配置(可选)>转换
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.