1

最近、iOSアプリケーションの開発に取り組み始めました。最近、私は次の機能を備えている必要がある音楽プレーヤーに取り組んでいます:

-phpWebサービスからの曲のオンラインバッファリング。-再生、一時停止、停止、次の曲、前の曲。-2つのスライダー。1つはボリュームコントロール用で、もう1つは曲の再生時間を表示するためのものです。-シャッフル、リピート曲。

私はAVPlayerとAVAudioPlayerでこれらのことを試しましたが、AVAudioPlayerではURLからデータをストリーミングすることはできません。私はたくさん試したので、AVplayerを使用してこれを行いましたが、ボリュームコントロールなどのオプションをサポートしていません。ある時点でバッファリングが停止した場合に再生ボタンをもう一度押す必要があるなど、バッファリングも適切ではありません。私はこの分野で新しいので私が簡単に理解できるどんなチュートリアルでもこの​​オーディオプレーヤーのために緊急の助けを必要としています。これがコードです

NSURL *url = [[NSURL alloc] initWithString:@"http://www.androidmobiapps.com/extrememusic/app/songs/1.mp3"];

[self setupAVPlayerForURL:url];

私はviewdidloadでこの曲を呼んでいます

-(void) setupAVPlayerForURL: (NSURL*) url {
AVAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];
AVPlayerItem *anItem = [AVPlayerItem playerItemWithAsset:asset];

audioPlayer = [AVPlayer playerWithPlayerItem:anItem];
[audioPlayer addObserver:self forKeyPath:@"status" options:0 context:nil];

}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {

if (object == audioPlayer && [keyPath isEqualToString:@"status"]) {
    if (audioPlayer.status == AVPlayerStatusFailed) {
        NSLog(@"AVPlayer Failed");
    } else if (audioPlayer.status == AVPlayerStatusReadyToPlay) {
        NSLog(@"AVPlayer Ready to Play");
    } else if (audioPlayer.status == AVPlayerItemStatusUnknown) {
        NSLog(@"AVPlayer Unknown");
    }
}

}

4

1 に答える 1

0

上記の機能をクラスとして実行し、それをオープンソースにしました。クラスを直接使用するか、AVFoundation の初心者の例として扱います。幸運を!

こちらの GitHub でこのリポジトリをご覧ください

于 2013-02-07T06:43:23.657 に答える