有没有办法强制AVPlayer音频流总是有限的缓冲播放?

时间:2012-12-22 02:59:35

标签: iphone xcode audio-streaming avplayer internet-radio

我正在创建一个应用程序,它将从互联网广播流中直播音频。

我正在使用AVPLayer并创建AVAudioSession等等......

一切正常,除了...... AVPlayer没有[停止]功能,只有[播放]和[暂停]。因此,当用户暂停流时,它会缓冲,当他们点击播放时,它会在他们按下暂停之前从停止的位置开始。

问题是......有没有办法强制音频流始终播放?

我真的不希望任何缓冲超过几秒......

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如果您不想缓冲,请尝试通过MPMovieviewcontroller播放流媒体直播音频。

它是直播音频/视频的完美播放器。我也在我的一个

中使用这个播放器

用于播放实时音频流的应用程序。我认为你的所有要求都与此相符。尝试实施

它。它也很容易实现。这是我使用

播放流音频的代码

MPMovieviewcontroller:

    NSURL *fileURL=[NSURL URLWithString:geturl];
    NSLog(@"fileURL..%@",fileURL);
    moviePlayerController = [[MPMoviePlayerViewController alloc] initWithContentURL:fileURL];
    [moviePlayerController.moviePlayer prepareToPlay];
    moviePlayerController.moviePlayer.shouldAutoplay=YES;
    moviePlayerController.view.frame = self.view.frame;
    [self presentMoviePlayerViewControllerAnimated:moviePlayerController];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MPMoviePlayerDidExitFullscreen:) name:MPMoviePlayerDidExitFullscreenNotification object:nil];
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
    [[AVAudioSession sharedInstance] setActive: YES error: nil];
    [moviePlayerController.moviePlayer play];

- (void)MPMoviePlayerDidExitFullscreen:(NSNotification *)notification
{
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:MPMoviePlayerDidExitFullscreenNotification 
                                                  object:nil];

    [moviePlayerController.moviePlayer stop];
    MPMoviePlayerController *player = [notification object];
    [[NSNotificationCenter defaultCenter] 
     removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification
     object:player];
    [moviePlayerController dismissMoviePlayerViewControllerAnimated];
}

对于后台播放,我在info.plist中添加这些行。你还将这些添加到plist:

enter image description here