При экспорте AIFF в AAC с помощью образца кода Apple AVFoundationExporter у меня получилось что-то не так

Я скачал образец кода Apple AVFoundationExporter (доступен с сайта разработчика Apple). Название проекта - "AVFoundationExporter: Экспорт и транскодирование фильмов", но я пытаюсь использовать его для изменения файла 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. Это просто не пойдет. Я могу открыть файл.aiff очень хорошо, и он играет счастливо. Но когда я пытаюсь заставить файл.m4a "Открыть в... iTunes", iTunes открывается, и ничего не происходит. Файл.m4a нигде не появляется в iTunes.

Я пытался изменить линию

var destinationFileType = AVFileTypeQuickTimeMovie

в

var destinationFileType = AVFileTypeAppleM4A

И теперь это не с

ошибка: операция остановлена: операция не поддерживается для этого носителя. Программа завершилась с кодом выхода: 1

Я повозился с множеством настроек, и, похоже, ничего не работает. Флаг -inject-metadata не имеет никакого значения. Также не используется -preset. -fileType com.apple.m4a-audio не помогает. Странно то, что я действительно получаю нужный файл. Это просто не работает должным образом. Если я открою свой файл "testfile.m4a" в QuickTime и снова его экспортирую, то получу файл.m4a с другим битрейтом, но этот действительно открывается в iTunes.

1 ответ

Решение

Тип файла 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
Другие вопросы по тегам