将来自youtube.com的视频嵌入到iphone应用中

时间:2011-02-28 16:07:40

标签: iphone youtube

我正在尝试将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>

感谢。

6 个答案:

答案 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内嵌播放视频。这是一张图片:

enter image description here

答案 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提供对视频播放器的完全控制。希望这可以帮助任何人。