MPMoviePlayerController音频/视频不同步

时间:2012-09-21 22:03:02

标签: objective-c audio mpmovieplayercontroller sync

在我的iPad应用程序中,我创建了一个MPMoviePlayerController,它可以播放网站上的MP4。在MP4中有人在说话。在应用程序中,我注意到音频和视频可能在半秒或四分之一秒内不同步。 (我可以说这是因为我在网络浏览器中查看视频并且没有延迟。)

我唯一的线索是,当MPMoviePlayerController首次加载时,音频开始播放,但视频没有 - 然后视频开始播放,它似乎跳过几帧来“捕获” “对音频......但它并不完全同步。

看到这个类如何是Apple Documentation的“黑盒子”,并且没有任何现有的方法或属性对这个问题有帮助,我有点难过。我可能不得不留下它是如何与轻微的滞后,而不是面对奇怪的解决方法。我想知道是否有人以前经历过这个或者可以提出解决方案。

我正在运行Mountain Lion,最新的XCode,带有iOS 6的iPad 2.

我用来生成控制器的代码是:

- (void)startVideoPlaying {

if (!self.theMoviePlayer) {
    self.theMoviePlayer = [[MPMoviePlayerController alloc] initWithContentURL: movieURL];
    [self.bgView addSubview: self.theMoviePlayer.view];
    [self.theMoviePlayer.view setFrame: movieContainer.frame]; // player's frame must match parent's
} else {
    [self.theMoviePlayer setContentURL:movieURL];
}
    self.theMoviePlayer.shouldAutoplay = YES;
    [self.theMoviePlayer play];
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

经过各种测试后,我必须得出结论,我一直在播放的MP4编码有问题。我不是视频编解码器大师,但我做了以下测试,告诉我这个:

1)下载MP4,将其放入应用程序并通过文件URL将其加载到MPMoviePlayerController中。音频仍然不同步,因此不是连接问题。

2)在网络上找到另一个MP4(Vimeo之外的东西)并将其传输到播放器中。音频同步正常,可能是我试图播放的MP4出现问题。

3)下载MP4,并使用Handbrake将其转换为具有各种不同设置(包括iPad预设)的M4V。音频同步很好。

基于此,在我看来,我试图播放的文件有问题而不是播放器(或播放器无法处理)。不幸的是,我试图播放的文件不能简单地转换,它们是大型网站系统的一部分,并且需要更改数百个文件,依此类推。所以,虽然我已回答了我自己的问题,但我还没有解决问题。