Аудиопоток с AVPlayer - PullRequest
       29

Аудиопоток с AVPlayer

6 голосов
/ 20 февраля 2011

Существует множество потоковых приложений для iOS.Все они используют плеер, который, я полагаю, является AVPlayer.Тем не менее, невозможно найти достойную документацию с примером кода, который работает!Я почти уверен, что это всего лишь несколько строк кода, но я просто не могу понять, в чем дело ...

У меня ошибка EXC_BAD_ACCESS при попытке вызвать метод play.Но URL-адрес хорош, и есть экземпляр проигрывателя.

- (void)viewDidLoad {
    [super viewDidLoad];

// Load the array with the sample file
NSString *urlAddress = @"http://mystreamadress.mp3";

//Create a URL object.
urlStream = [NSURL URLWithString:urlAddress];   
self.player = [AVPlayer playerWithURL:urlStream];   

[urlAddress release];
}

urlStream - это свойство с атрибутом retain.Затем у меня есть IBAction, который срабатывает при нажатии кнопки и пытается воспроизвести ее, и именно там она падает.

- (IBAction)playButtonPressed
{       
    [player play];  
}

Может ли моя проблема быть в том, что я пытаюсь воспроизвести MP3 или что?Реальный URL-адрес, который я использую, прекрасно работает, когда я использую веб-вид для его загрузки.

Если кто-то может указать мне хороший пример (не документы AVFoundation ou AVPlayer от Apple или проект AVTouchController), это будетбыть очень ценным.

Спасибо!

Ответы [ 2 ]

5 голосов
/ 20 февраля 2011

urlAddress release вызывает проблему, я думаю.

Вы не создали свою NSString с помощью alloc, init, так что, выпуская ее, вы перевыпускаете ее и получаете EXC_BAD_ACCESS.

Если вы явно не создадите NSString с помощью alloc и init, а затем для удобствасоздания строки автоматически освобождены.

0 голосов
/ 07 июля 2011
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:fileURL];
//AVPlayer *avPlayer = [[AVPlayer playerWithURL:[NSURL URLWithString:url]] retain];
avPlayer = [[AVPlayer playerWithPlayerItem:playerItem] retain];
//AVPlayerLayer *avPlayerLayer = [[AVPlayerLayer playerLayerWithPlayer:avPlayer] retain];
[avPlayer play];
avPlayer.actionAtItemEnd = AVPlayerActionAtItemEndNone; 

Я использую его для воспроизведения mp3, но он не поддерживает остановку.

...