使用iOS 6的iPhone应用程序中embedded的vimeovideo不能播放

我似乎无法获得iOS 6中的任何video。无论是在设备上(iP4)和模拟器。

我有一个UIWebView安装在IB。 然后在我的viewDidLoad我有以下代码:

 NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://domain.com/app/player.php?vid=%@", [videoDetails objectForKey:@"vid"]]]; NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; [videoWebView loadRequest:requestObj]; 

只是为了解释,vimeo上的video设置是只允许托pipe在特定的域上,否则会显示错误消息。 所以我有一些简单的HTML设置在player.php,只是调用VIMEOembedded代码。

当我进入有UIWebView的视图,并且video已经加载,并且您在vimeovideo中看到“play”图标时,点击该图标,然后video显示一个加载图标,然后在大约5-10秒,控制台输出下面的和UIWebView只是变白。

控制台输出:

 2013-01-30 16:50:11.809 My App[2807:907] [MPAVController] Autoplay: Enabling autoplay 2013-01-30 16:50:11.821 My App[2807:907] [MPAVController] Autoplay: Skipping autoplay, disabled (for current item: 0, on player: 1) 2013-01-30 16:50:11.831 My App[2807:907] [MPAVController] Autoplay: Enabling autoplay 2013-01-30 16:50:12.042 My App[2807:907] [MPCloudAssetDownloadController] Prioritization requested for media item ID: 0 2013-01-30 16:50:21.254 My App[2807:907] [MPAVController] Autoplay: Skipping autoplay, disabled (for current item: 0, on player: 1) 2013-01-30 16:50:22.000 My App[2807:907] [MPAVController] Autoplay: Enabling autoplay 2013-01-30 16:50:22.244 My App[2807:907] [MPAVController] Autoplay: Disabling autoplay for pause 2013-01-30 16:50:22.246 My App[2807:907] [MPAVController] Autoplay: Disabling autoplay 2013-01-30 16:50:22.354 My App[2807:907] [MPAVController] Autoplay: Disabling autoplay 2013-01-30 16:50:22.591 My App[2807:907] [MPAVController] Autoplay: Enabling autoplay 2013-01-30 16:50:22.593 My App[2807:907] [MPAVController] Autoplay: Skipping autoplay, disabled (for current item: 0, on player: 1) 2013-01-30 16:50:22.655 My App[2807:907] [MPAVController] Autoplay: Enabling autoplay 2013-01-30 16:50:22.973 My App[2807:907] [MPAVController] Autoplay: Enabling autoplay 2013-01-30 16:50:23.057 My App[2807:907] [MPAVController] Autoplay: Skipping autoplay, disabled (for current item: 0, on player: 1) 

在iOS 5上,video只按预期播放。 事情是,这与vimeo没有关系。 我已经尝试了以下内容:

Vimeo随机公开video(不embedded在domain.com上托pipe的文件中)

 NSString *htmlStringToLoad = [NSString stringWithFormat:@"http://player.vimeo.com/video/32424117?title=0&byline=0&portrait=0&width=320&height=181&frameborder=0"]; [videoWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:htmlStringToLoad]]]; 

然后再与YouTube:

 [videoWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.youtube.com/watch?v=dABo_DCIdpM"]]]; 

我唯一担心的是使用Vimeovideo,因为这是他们全部存储的地方。 但是我不能在这里看到VIMEO的问题,因为它不能在YT上工作,所以肯定会有一些我做错了,以保持iOS 6的快乐? 我search了一下,我似乎找不到任何解决scheme,即使我不认为这只是我这件事发生。

提前致谢。

为此,我必须完全抛弃UIWebView。

我不知道你是否可以在免费的Vimeo帐户上得到这个,但是在我们的PRO帐户中,在video设置中有一个“video文件”选项卡,底部有一个标签为“HTTP Live Streaming”的字段,实际上有一个直接的链接到您的video。

然后,而不是UIWebView,我用MPMoviePlayerViewController来播放video。

将MediaPlayer.framework添加到“Link Binary With Libraries”设置中。 在我的视图控制器的.h文件中有一个UIImageView,一对标签和一个播放button,我导入了#import <MediaPlayer/MediaPlayer.h>并设置了属性@property(nonatomic, readonly) MPMoviePlayerViewController *player;

然后,在.m文件中:

 -(IBAction)playVideo:(id)sender{ NSString *videoString = @"http://player.vimeo.com/external/THE_VIDEO_ID.m3u8?p=standard,mobile&s=UNIQUE_VALUE_FOR_EACH_VIDEO"; player = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:videoString]]; [player.moviePlayer prepareToPlay]; [player.view setFrame: self.view.bounds]; [self.view addSubview: player.view]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MPMoviePlayerDidExitFullscreen:) name:MPMoviePlayerDidExitFullscreenNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MPMoviePlayerDidExitFullscreen:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; [player.moviePlayer play]; } - (void)MPMoviePlayerDidExitFullscreen:(NSNotification *)notification{ [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerDidExitFullscreenNotification object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; [player.moviePlayer stop]; [player.moviePlayer.view removeFromSuperview]; } 

我曾尝试加载HTTP实时streamURL到UIWebView,但它似乎并没有工作。 短暂出现一个黑色的屏幕,中间有一个Vimeo播放button。 然后在一秒钟内全屏播放器打开大约一秒,closures然后UIWebView变白。

我还在testing这个,到目前为止已经设法发挥我们最长的video,1小时45分钟没有问题的iOS 6和5.1的WiFi。 但希望这将帮助其他人作为一个开始。

您仍然可以通过注册来自UIMoviePlayerController的通知并处理相应的事件来使用UIWebview …

 -(void)viewDidLoad { ... [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoStarted:) name:@"UIMoviePlayerControllerDidEnterFullscreenNotification" object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoFinished:) name:@"UIMoviePlayerControllerDidExitFullscreenNotification" object:nil]; } -(void)videoStarted:(NSNotification *)notification{ // your code here } -(void)videoFinished:(NSNotification *)notification{ // your code here }