2

以前に多くの人から質問されたことは知っていますが、x-code と Objective C のアプリケーションでこれが機能しない理由がわかりません!

基本的に、URLからアプリケーションでオーディオを再生したいです。Appleサイトのテストオーディオを使用するだけで、私のコードは次のとおりです。

NSString *playString = @"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8";

//Converts songURL into a playable NSURL
NSURL *playURL = [NSURL URLWithString:playString];

AVAudioPlayer *backgroundMusicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:playURL error:&error];

if (backgroundMusicPlayer == nil) {
    NSLog(@"%@", [error description]);
}
else {
    [backgroundMusicPlayer prepareToPlay];
    [backgroundMusicPlayer play];
}

次のエラーが表示されます。

エラー Domain=NSOSStatusErrorDomain Code=-43 「操作を完了できませんでした。(OSStatus エラー -43.)

そして、ググっても何も見つかりません。何か案は?別のオーディオ ストリームを試す必要がありますか? または、誰かがうまくいく例を持っていますか? 実際のiPhoneではなく、iPhoneシミュレーターを使用しているからでしょうか?

編集:

注意してください - URL と言うとき、実際の Web サイトからの URL を意味します。ダウンロードしたまま再生できるようにしたい!ありがとう

4

3 に答える 3

4

その非常に単純な AVAudioPlayer を使用し、オブジェクトを AVAudioPlayer *audioPlayer として取得し、

  NSURL *url = [NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"];
  NSData *soundData = [NSData dataWithContentsOfURL:url];
  audioPlayer = [[AVAudioPlayer alloc] initWithData:soundData  error:NULL];
  audioPlayer.delegate = self;
  [audioPlayer play];

デリゲート メソッドの下に記述します。

 -(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
    [audioPlayer stop];
     NSLog(@"Finished Playing");
  }

 - (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error
 {
  NSLog(@"Error occured");
 }
于 2013-04-06T11:53:42.663 に答える
2

ここでライブテストストリームを見つけることができます

ファイルを再生するには、次を使用します。

[player play];

URL からライブ ストリームを再生するコードは次のとおりです。

NSURL *url = [NSURL URLWithString:@"<#Live stream URL#>];
self.playerItem = [AVPlayerItem playerItemWithURL:url];
    /* [playerItem addObserver:self forKeyPath:@"status" options:0 context:&ItemStatusContext]; (can use it) */
self.player = [AVPlayer playerWithPlayerItem:playerItem];
self.player = [AVPlayer playerWithURL:<#Live stream URL#>];
//(optional) [player addObserver:self forKeyPath:@"status" options:0 context:&PlayerStatusContext];
于 2013-04-06T12:11:51.717 に答える