2016-06-22 11 views
0

私はAVPlayerのURLから.mp3を再生しようとしています。URLからのobjective-C AVPlayer

url = [NSURL URLWithString:@"https://dl.dropboxusercontent.com/s/jcq74691pet09d9/Chumbawamba%20-%20Tubthumping%20HD.mp3?dl=0"]; 

AVPlayerItem *item = [[AVPlayerItem alloc]initWithURL:url]; 
AVPlayer *player = [[AVPlayer alloc]initWithPlayerItem:item]; 


[player play]; 

私はすでにAVFoundation.hAVFoundation.mを輸入してきたし、URLリンクは、直接/ホットリンクとして動作します。

動作させることができません。その理由はわかりません。

答えて

0

このようにしてみてください。

NSURL *myurl = [NSURL URLWithString:@"https://dl.dropboxusercontent.com/s/jcq74691pet09d9/Chumbawamba%20-%20Tubthumping%20HD.mp3?dl=0"]; 
    NSData *data = [NSData dataWithContentsOfURL:myurl]; 
    audioPlayer = [[AVAudioPlayer alloc] initWithData:data 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(@"Something wrong"); 
} 
0
// *** create AVAsset using URL *** 
AVAsset *asset = [AVAsset assetWithURL:[NSURL URLWithString:@"https://dl.dropboxusercontent.com/s/jcq74691pet09d9/Chumbawamba%20-%20Tubthumping%20HD.mp3?dl=0"]]; 

// *** Create AVPlayerItem using AVAsset *** 
AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithAsset:asset]; 

// *** Initialise AVPlayer *** 
avPlayer = [AVPlayer playerWithPlayerItem:playerItem]; 

// *** Add AVPlayer to ViewController *** 
AVPlayerLayer *avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:avPlayer]; 
avPlayerLayer.frame = CGRectMake(0, 0, 320, 480); 
[avPlayerLayer setBackgroundColor:[UIColor grayColor].CGColor]; 
[self.view.layer addSublayer:avPlayerLayer]; 

// *** Start Playback *** 
[avPlayer play]; 

// *** Register for playback end notification *** 
[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(playerItemDidReachEnd:) 
              name:AVPlayerItemDidPlayToEndTimeNotification 
              object:[avPlayer currentItem]]; 

// *** Register observer for events of AVPlayer status *** 
[avPlayer addObserver:self forKeyPath:@"status" options:0 context:nil]; 

をAVPlayer

// *** Observe status event and perform actions *** 
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 

    if (object == avPlayer && [keyPath isEqualToString:@"status"]) { 
     if (avPlayer.status == AVPlayerStatusFailed) { 
      NSLog(@"AVPlayer Failed"); 

     } else if (avPlayer.status == AVPlayerStatusReadyToPlay) { 
      NSLog(@"AVPlayerStatusReadyToPlay"); 
      [avPlayer play]; 


     } else if (avPlayer.status == AVPlayerItemStatusUnknown) { 
      NSLog(@"AVPlayer Unknown"); 

     } 
    } 
} 
の再生状況を観察するには、次のオブザーバメソッドを追加します。
関連する問題