6

有很多适用于 iOS 的流媒体应用程序。他们都使用播放器,我假设是 AVPlayer。然而,似乎不可能找到一个像样的文档,其中包含有效的示例代码!我很确定这只是几行代码,但我就是不知道出了什么问题......

尝试调用“播放”方法时出现 EXC_BAD_ACCESS 错误。但是网址很好,并且有播放器的实例。

- (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 是具有保留属性的属性。然后我有一个 IBAction 在单击按钮时触发并尝试播放它,这就是它崩溃的地方。

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

我的问题可能是因为我正在尝试播放 MP3 还是什么?当我使用 webview 加载它时,我使用的真实 url 地址工作正常。

如果有人能给我指出一个好的示例(不是来自 Apple 的 AVFoundation 或 AVPlayer 文档,也不是 AVTouchController 项目),我将不胜感激。

谢谢 !

4

2 回答 2

5

urlAddress release导致我认为的问题。

你没有用 alloc, init 创建你的 NSString,所以通过释放它你会过度释放它并获得 EXC_BAD_ACCESS。

除非您使用 alloc 和 init 显式创建 NSString,否则创建字符串的便捷方法将自动释放。

于 2011-02-19T22:27:55.237 回答
0
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,但它不支持停止。

于 2011-07-07T12:57:21.857 回答