2016-02-14 11 views
0

Я загрузил образец кода Apple AVFoundationExporter (доступный с сайта Apple dev). Название проекта - «AVFoundationExporter: экспорт и транскодирование фильмов», но я пытаюсь использовать его для изменения файла AIFF в файл AAC (M4A).Экспорт AIFF в AAC с использованием кода примера AVFoundationExporter от Apple вызывает у меня что-то слабое нарушение

На рабочем столе у ​​меня есть файл «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 

И теперь он терпит неудачу с

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 не помогает. Странно то, что я действительно получаю файл, который я хочу. Это просто не работает должным образом. Если я открою файл «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 
+0

Большое спасибо за помощь. Но ... Это действительно дает ожидаемый файл .m4a, который действительно играет, если вы дважды щелкните по нему (и если вы выберете его и нажмите пробел). Но когда я нажимаю на него и говорю «Open in> iTunes», iTunes открывается, но файл .m4a не импортируется. Он тоже не играет. В main.swift есть строка, которая гласит: «var destinationFileType = AVFileTypeQuickTimeMovie». Если я изменил это на «var destinationFileType = AVAssetExportPresetAppleM4A» (пытаясь соответствовать пресету m4a), я получаю сбой, со следующим: –

+0

2016-02-15 19: 15: 51.915 AVFoundationExporter [9371: 1120595] *** Завершение приложения из-за неперехваченного исключения «NSInvalidArgumentException», причина: «Недопустимый тип выходного файла» –

+0

(Mac OS X 10.11.3 и iTunes 12.3.2.35, если это имеет значение) –