1

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

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

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

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

我真的不想缓冲超过几秒钟......

谢谢您的帮助!

4

1 回答 1

1

如果您不想缓冲,请尝试通过 MPMovieviewcontroller 播放流式实时音频。

它是实时流媒体音频/视频的完美播放器。我也在我的一个中使用这个播放器

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

更换它。它也很容易实现。这是我播放流音频的代码

MPMovieview 控制器:

    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:

在此处输入图像描述

于 2012-12-22T05:19:29.020 回答