2015-10-08 2 views
0

Я пытаюсь программно воспроизвести файл m4a на устройстве iOS. Файл загружается с сервера и сохраняется. Когда пользователь нажимает кнопку, он воспроизводится. Файл, при копировании с устройства на OSX, отлично работает. Я использую кодSwift 2 - файл m4a не будет воспроизводиться на iOS

var player:AVAudioPlayer = AVAudioPlayer() 

func playAudio(sender: UIButton!) { 
    let audioPath = FileUtils.getPath(audioPaths[sender.tag]) 
    print("PATH " + audioPath)//The printed path IS DEFINETLY correct 
    do{ 
     player = try! AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: audioPath)) 
     player.prepareToPlay() 
     player.play() 
    } 
} 

Путь правильный, поэтому я не уверен, почему он не будет работать. Может быть, это формат (даже если он играет на OSX)?

Пример файла: https://www.dropbox.com/s/csewwg6n9vzan5z/131015-08%3A13%3A30.m4a?dl=0

+0

Как инициализируются аудиопары? – user1232690

+0

Это довольно сложная покупка Я могу заверить вас, что путь действителен –

+0

BTW, блок 'do {}' не нужен, если вы используете 'try!' –

ответ

3

Этот файл не будет воспроизводиться на iOS, поскольку он закодирован в AMR NarrowBand, which is no longer supported.

Я бы попробовал перекодировать файлы m4a как AAC или переключиться на mp3.

+0

Спасибо, я попробую это –

+0

Im собираюсь принять этот ответ, потому что это тот, который помог обоим, но @matt вы тоже были полезны, я могу выбрать только один –

1

Это, скорее всего, просто особенность, как этот m4a файл сжат. Простой факт заключается в том, что не каждый файл m4a, даже если он является совершенно допустимым файлом, будет воспроизводиться на вашем устройстве. (Например, возможно, этот файл очень сжат.) И чтобы усложнить ситуацию, он отличается от устройства к устройству! И чтобы сделать вещи даже еще сложно, файл может воспроизводиться в приложении «Музыка», но не в AVAudioPlayer!

Чтобы проверить эту теорию, перекодируйте файл как более среднюю часть дороги m4a и посмотрите, , что играет.

+0

Имеет смысл, но нет ли обходного пути? Тот факт, что osx может воспроизвести файл, доказывает его возможный –

+0

. Я не думаю, что вы слушаете то, что я говорю. Тот факт, что OS X может воспроизводить файл _, является проблемой_. Это файл, который OS X может воспроизводить, но ваше устройство iOS cannot_. Доверьтесь мне. Мне это случилось со мной. – matt

+0

@HamzahMalik Вы начинаете верить мне сейчас? – matt