我需要在来自youtube的UIWebiview中播放视频。
在旧设备(5.1+
)
不幸的是,iOS7
视频无法播放。它开始loading
但它永远不会开始播放。即使视频已完全加载。只有当您停止并按手动播放时,视频才会开始播放。
以下是一些代码:
- (void)viewDidAppear:(BOOL)animated;
{
[super viewDidAppear:animated];
if(!self.viewMoviePlayerView.superview) {
[self.viewMediaContentContainer addSubview:self.viewMoviePlayerView];
}
self.viewMoviePlayerView.isScrollingEnabled = NO;
[self.viewMoviePlayerView loadRequest:[NSURLRequest requestWithURL:
[NSURL URLWithString:
[NSString stringWithFormat:@"%@%@", @"http://www.youtube.com/embed/", self.currentSelectedItem.guid]]]];
...
}
有关于此的任何建议吗?
答案 0 :(得分:0)
最近版本的iOS不允许自动播放。您不应该以编程方式开始下载可能会给用户带来成本的数据。我找到了一种方法,但这有点棘手:
显示html字符串而不是网址
[webview loadHTMLString:<html> baseURL:[[NSBundle mainBundle] resourceURL]];
html需要是一个嵌入式播放器:
<html>
<body style='margin:0px;padding:0px;'>
<script type='text/javascript' src="http://www.youtube.com/iframe_api"></script>
<script type='text/javascript'>
function onYouTubeIframeAPIReady(){
ytplayer=new YT.Player('playerID',{events:{onReady:onPlayerReady, onStateChange:onPlayerStateChange}});
}
function onPlayerReady(a){ a.target.playVideo(); }
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.BUFFERING) {
event.target.playVideo();
}
}
</script>
<iframe id='playerID' type='text/html' width='320' height='240'
src="http://www.youtube.com/embed/xxxxxxxxxxx?enablejsapi=1&rel=0&playsinline=1&autoplay=1" frameborder='0'></iframe>
</body>
</html>
这很好用,因为iframe API中的javascript会强制播放器在加载后开始播放,并且每次开始缓冲时都会播放。我强烈建议你read about the youtube API