使用 Apple 的 AVFoundationExporter 示例代码将 AIFF 导出到 AAC 让我有些损坏

Exporting AIFF to AAC using Apple's AVFoundationExporter sample code gets me something slightly broken

我已经下载了 Apple 的示例代码 AVFoundationExporter(可从 Apple 开发站点获得)。该项目的标题是 "AVFoundationExporter: Exporting and Transcoding Movies",但我正在尝试使用它将 AIFF 文件更改为 AAC (M4A) 文件。

在桌面上,我有一个文件"testfile.aiff"。我用命令调用它...

AVFoundationExporter "/Users/rbell/Desktop/testfile.aiff" "/Users/rbell/Desktop/testfile.m4a" -preset AVAssetExportPresetAppleM4A -f public.mpeg-4-audio"

(或者只是 [AVFoundationExporter "/Users/rbell/Desktop/testfile.aiff" "/Users/rbell/Desktop/testfile.m4a"])

...我的桌面上确实有一个名为 "testfile.m4a" 的文件。我确实可以使用 Finder 的空格键预览或使用 QuickTime 播放它。

但是,我无法使用 iTunes 打开它或将其导入 iTunes。它根本不会去。我可以很好地打开 .aiff 文件,它播放得很开心。但是当我尝试将 .m4a 文件强制设置为 "Open in... iTunes" 时,iTunes 打开但没有任何反应。 .m4a 文件没有出现在 iTunes 中的任何地方。

我试过换行

var destinationFileType = AVFileTypeQuickTimeMovie

var destinationFileType = AVFileTypeAppleM4A

现在失败了

error: Operation Stopped: The operation is not supported for this media.. Program ended with exit code: 1

我摆弄了很多设置,但似乎没有任何效果。 -inject-metadata 标志没有任何区别。使用 -preset 也不行。 -fileType com.apple.m4a-audio 没有帮助。奇怪的是,我真的得到了我想要的文件。它只是不能正常工作。如果我在 QuickTime 中打开我的 "testfile.m4a" 文件并再次导出它,那么我最终会得到一个具有不同比特率的 .m4a 文件,但这个文件确实可以在 iTunes 中打开。

文件类型 public.mpeg-4-audio(来自 kUTTypeMPEG4Audio?)错误。您需要 com.apple.m4a-audio(对应于 AVFileTypeAppleM4A)。

不要忘记先删除现有的 m4a 文件!

所以你的命令应该是

rm -f out.m4a  # AVFoundation doesn't like overwriting existing files.
AVFoundationExporter in.aiff out.m4a -preset AVAssetExportPresetAppleM4A -f public.mpeg-4-audio