файл m4a воспроизводится с avplayer, но не с avaudioplayer

#ios #swift

#iOS #swift

Вопрос:

Это странное явление происходит, когда я создаю свое приложение на своем iPhone. AVAudioPlayer ничего не делает, когда я пытаюсь воспроизвести файл.

AVPlayer, с другой стороны, отлично воспроизводит файл.

Я хотел бы использовать AVAudioPlayer, поскольку у него есть настройки микширования звука. Тот же AVAudioPlayer может воспроизводить файлы mp3, просто найдите, поэтому я не настроил его неправильно.

работает:

player = AVPlayer(url: m4aFile)

против

не работает:

player = try! AVAudioPlayer.init(contentsOf: m4aFile)

Ответ №1:

В вашем вопросе не хватает информации, но, возможно, вы забываете вызвать prepareToPlay при использовании AVAudioPlayer .

Комментарии:

1. нет. это не моя проблема. Я хорошо понимаю, что мне нужно это сделать. Я сказал, что могу загружать mp3-файлы с помощью avaudioplayer, но не файлы m4a. что означает, что, похоже, есть какая-то разница в поддержке формата?

2. AVAudioPlayer должен поддерживать m4a, поскольку он поддерживается Core Audio. Является ли m4aFile локальным файлом? Не могли бы вы добавить немного больше контекста в свой код? Например, откуда берется файл и как вы начинаете воспроизведение.

3. конечно. Я извлекаю файл из каталога documents, определенного в коде:

4. FileManager.default.urls(для: .documentDirectory, в: .userDomainMask)[0]

5. затем я использую содержимое этого каталога, чтобы вернуть все файлы в каталоге и добавить их в массив. попробуйте! FileManager.default.contentsOfDirectory(по адресу: path, includingPropertiesForKeys: nil, options: [])