Cocoa WebView - HTML5视频全屏不起作用

5

我正在尝试构建一个OSX Cocoa应用程序,其中集成了WebKit WebView以显示网页。

网页上有HTML5视频元素,用户应该能够在全屏模式下播放。但是,在Mountain Lion(10.8.2)上,全屏模式只显示黑屏,音频仍在播放,但在OSX Lion上可以正常工作,这是一个错误还是我错过了什么东西。

最小示例:

步骤:

创建Cocoa应用程序,添加WebView,连接属性“web”并添加WebKit框架

代码:

#AppDelegate.h

#import <Cocoa/Cocoa.h>
#import <WebKit/WebKit.h>

@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (assign) IBOutlet NSWindow *window;
@property (weak) IBOutlet WebView *web;
@end

#AppDelegate.m

#import "AppDelegate.h"

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
  NSString *html = @"<html><body><video src=\"http://video-js.zencoder.com/oceans-clip.mp4\" controls></body></html>";
  [[self.web mainFrame] loadHTMLString:html baseURL:nil];
}
@end

在OSX 10.8.3中已修复:

问题似乎已在OSX 10.8.3中得到解决,全屏模式现在可以正常工作,即使没有像OSX 10.8.2之前那样进行沙盒化。


1
我可以确认这个 bug,而且它在 10.8.1 版本之前是正常工作的,因此最新更新中有所改变。 - Conor
1
A向苹果提交了一个错误报告,让我们等待观察。 - tripplet
太好了,我也这么做了。填充重复项是提高错误优先级的几种方法之一。 - Conor
我也刚刚做了同样的事情。不管怎样,我很高兴我的代码没有因为HTML5视频而崩溃 :) - Beny
终于经过漫长的等待,苹果回复了:这是#12313594的重复问题,我的bug id是#12412325。但没有提到任何解决方法或建议。有人知道下一步该怎么做吗? - tripplet
你的应用程序是否可以进行沙盒化?一种解决方法似乎是启用沙盒模式,请参考我的回答。 - Joris Kluivers
2个回答

1
我使用您发布的完全相同的代码设置了一个项目。这确实对我失败了,只在全屏模式下显示了黑屏。
然而,这似乎是WebKit的沙盒问题。在将应用程序沙盒化后,全屏模式按预期工作。(使用10.8.2)
该应用程序被沙盒化,无需任何其他权限即可使其正常工作:

enter image description here


它对演示代码有效,但我需要允许我的应用程序进行出站连接,如果我启用“允许出站连接”,我会回到黑色全屏状态,接受为答案,因为它解决了发布的问题。但我希望有人知道一种允许出站连接的解决方案。 - tripplet

-2

你可以尝试一下这段代码,希望它能够运行成功。它可以在 iPhone 上运行,我猜应该也可以在 OSX 上运行。

头文件

UIWebView *webView;

实现文件

NSString *html = @"<html><body><video src=\"http://video-js.zencoder.com/oceans-clip.mp4\" controls></body></html>";

webView =[[UIWebView alloc] initWithFrame:CGRectMake(14, 57, 670, 675)];
        [webView loadHTMLString:html baseURL:nil];
[self.view addSubview:webView];

UIWebView在OSX上不可用。 - tripplet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接