6

iOS 向けのストリーミング アプリはたくさんあります。それらはすべて、AVPlayer であると思われるプレーヤーを使用します。それでも、動作するサンプル コードを含む適切なドキュメントを見つけることは不可能のようです。数行のコードに過ぎないと確信していますが、何が問題なのかわかりません...

「再生」メソッドを呼び出そうとすると、EXC_BAD_ACCESS エラーが発生します。しかし、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 アドレスは、webview を使用してロードすると正常に動作します。

誰かが良いサンプル (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 に答える