我正在尝试将YouTube视频嵌入到我的iphone应用程序中。我正在使用UIWebView并从youtube加载嵌入代码作为html字符串。所以我有一个基本的html标记布局,我正在放置这个代码。
<embed id="yt" src="http://www.youtube.com/watch?v=L9szn1QQfas&fs=0" type="application/x-shockwave-flash" width="%width%" height="%height%"></embed>
问题是视频始终以全屏模式打开。我已将我的webview属性allowInlineMediaPlayback更改为YES _webview.allowsInlineMediaPlayback = YES;
,但它也不起作用。有没有办法在没有全屏的情况下播放来自youtube的视频?
我也试图像这样嵌入
<iframe title="YouTube video player" id="videoframe" width="%width%" height="%height%" src="http://www.youtube.com/embed/L9szn1QQfas?rel=0" frameborder="0"></iframe>
和这个
<object type="application/x-shockwave-flash" data="http://www.youtube.com/v/L9szn1QQfas" width="%width%" height="%height%">
<param name="movie" value="http://www.youtube.com/v/L9szn1QQfas" />
<param name="quality" value="high" />
<param name="allowFullScreen" value="false" />
<embed id="yt" src="http://www.youtube.com/v/L9szn1QQfas" type="application/x-shockwave-flash" width="%width%" height="%height%"></embed>
</object>
感谢。
答案 0 :(得分:10)
据我所知,仅在iPad上支持内联媒体播放,而不支持iPhone。这可能是由于屏幕的尺寸限制。
编辑:
我设置了一个测试项目,其中包含UIWebView
和代码:
[webView setAllowsInlineMediaPlayback:YES];
[webView loadHTMLString:@"<embed id=\"yt\" src=\"http://www.youtube.com/watch?v=L9szn1QQfas&fs=0\" type=\"application/x-shockwave-flash\" width=\"300\" height=\"300\"></embed>"
baseURL:nil];
我在iPhone和iPad上都运行了相同的代码,两者都运行iOS 4.2.1。
结果是iPhone只能以全屏模式播放视频,无论将内嵌媒体播放设置为YES
并且iPad内嵌播放视频。这是一张图片:
答案 1 :(得分:10)
现在有一个未记录的参数“playinline”。我在iPhone 4S(iOS 6.1.2)上测试过它。
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: 'u1zgFlCw8Aw',
playerVars: {
'playsinline': 1
}
});
你也应该设置webview。
[webView setAllowsInlineMediaPlayback:YES];
答案 2 :(得分:7)
对于iOS 5或新应用使用官方语法,请参阅下面的链接,它可以正常使用
http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html
答案 3 :(得分:5)
如果有人仍然面临这个问题,下面是我见过的最好的解决方案。像魅力一样工作
self.webView = [[UIWebView alloc] initWithFrame:CGRectMake(10, 10,300, 200)];
[self.webView setAllowsInlineMediaPlayback:YES];
[self.webView setMediaPlaybackRequiresUserAction:NO];
[self.view addSubview:self.webView];
NSString* embedHTML = [NSString stringWithFormat:@"\
<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}})\
}\
function onPlayerReady(a)\
{ \
a.target.playVideo(); \
}\
</script>\
<iframe id='playerId' type='text/html' width='%d' height='%d' src='http://www.youtube.com/embed/%@?enablejsapi=1&rel=0&playsinline=1&autoplay=1' frameborder='0'>\
</body>\
</html>", 300, 200, @"JW5meKfy3fY"];
[self.webView loadHTMLString:embedHTML baseURL:[[NSBundle mainBundle] resourceURL]];
来源:https://code.google.com/p/gdata-issues/issues/detail?id=5204
答案 4 :(得分:4)
也可以在iPhone上内嵌YouTube视频。 您需要在UIWebView上设置属性
webView.allowsInlineMediaPlayaback=YES;
您需要在YouTube iframe嵌入代码中添加&amp; playsinline = 1。
<iframe webkit-playsinline width=\"200\" height=\"200\" src=\"https://www.youtube.com/embed/GOiIxqcbzyM?feature=player_detailpage&playsinline=1\" frameborder=\"0\"></iframe>
在运行iOS 6.1.2的iPhone 4S上测试就像魅力一样。
答案 5 :(得分:2)
如果您正在为ios版本7或更高版本开发应用程序,则可以使用Embed YouTube Videos in iOS Applications with the YouTube Helper Library处的YTPlayerView
课程。它非常易于使用,并通过使用其代理YTPlayerViewDelegate
提供对视频播放器的完全控制。希望这可以帮助任何人。