我正在创建一个应用程序,它将从互联网广播流中实时传输音频。
我正在使用 AVPLayer 并创建一个 AVAudioSession 等...
一切正常,除了... AVPlayer 没有 [stop] 功能,只有 [play] 和 [pause]。因此,当用户暂停流时,它会缓冲,当他们点击播放时,它会从他们之前按下暂停时停止的地方开始。
问题...有没有办法强制音频流始终实时播放?
我真的不想缓冲超过几秒钟......
谢谢您的帮助!
我正在创建一个应用程序,它将从互联网广播流中实时传输音频。
我正在使用 AVPLayer 并创建一个 AVAudioSession 等...
一切正常,除了... AVPlayer 没有 [stop] 功能,只有 [play] 和 [pause]。因此,当用户暂停流时,它会缓冲,当他们点击播放时,它会从他们之前按下暂停时停止的地方开始。
问题...有没有办法强制音频流始终实时播放?
我真的不想缓冲超过几秒钟......
谢谢您的帮助!
如果您不想缓冲,请尝试通过 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: