MPMoviePlayerController音频不在设备上播放但在模拟器上播放

时间:2013-05-09 15:58:42

标签: ios mpmovieplayercontroller

我的iOS应用中有一个MPMoviePlayerController来自Amazon S3的视频流。视频播放正常,但似乎在设备上(我使用iOS 6进行测试,不确定其他设备),音频无法播放。音频在模拟器上工作正常,而不是在设备上。

任何人都有任何想法有什么不对?这是我的代码:

// Construct the video's URL
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://s3.amazonaws.com/<mybucket>/%d.m4v",videoFileNumber]];
vidPlayer = [[MPMoviePlayerController alloc] initWithContentURL: url];

// Set up the video player
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(moviePlayBackDidFinish:)
                                             name:MPMoviePlayerPlaybackDidFinishNotification
                                           object:vidPlayer];

vidPlayer.scalingMode = MPMovieScalingModeAspectFill;
vidPlayer.controlStyle = MPMovieControlStyleDefault;
vidPlayer.shouldAutoplay = YES;

[self.view addSubview:vidPlayer.view];
[vidPlayer setFullscreen:YES animated:YES];

谢谢!

1 个答案:

答案 0 :(得分:5)

你忘了说prepareToPlay。这个电话绝对必不可少。我不是说它肯定会解决这个问题,但很可能,你绝对必须在现代iOS系统上调用它。

另外:要确切地知道出了什么问题,你必须注册通知。 MPMoviePlayerPlaybackDidFinishNotification很好,但我强烈建议您至少MPMoviePlayerLoadStateDidChangeNotification注册。

此外,我必须建议,由于音频不播放但视频正在播放,您可能需要关注此电影中包含的音频格式。该设备对其可播放的音频格式有一些令人惊讶的隐藏限制:例如,过度压缩的音频会给它带来麻烦。