【问题标题】:How to embed YouTube video on iOS and play it directly on UIWebView without full screen?如何在 iOS 上嵌入 YouTube 视频并直接在 UIWebView 上播放而无需全屏?
【发布时间】:2013-03-30 14:15:23
【问题描述】:

我正在使用此代码在 iOS 上播放 YouTube 视频

- (void)embedYouTube:(NSString *)urlString frame:(CGRect)frame
{
    NSString *htmlString = [NSString stringWithFormat:@"<html><head><meta name = \"viewport\" content = \"initial-scale = 1.0, user-scalable = yes, width = 320\"/></head><body style=\"background:#00;margin-top:0px;margin-left:0px\"><div><object width=\"320\" height=\"180\"><param name=\"movie\" value=\"http://www.youtube.com/v/%@&f=gdata_videos&c=ytapi-my-clientID&d=nGF83uyVrg8eD4rfEkk22mDOl3qUImVMV6ramM\"></param><param name=\"wmode\" value=\"transparent\"></param><embed src=\"http://www.youtube.com/v/%@&f=gdata_videos&c=ytapi-my-clientID&d=nGF83uyVrg8eD4rfEkk22mDOl3qUImVMV6ramM\"type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"320\" height=\"180\"></embed></object></div></body></html>", urlString, urlString];

    UIWebView *videoView = [[UIWebView alloc] initWithFrame:frame];
    [videoView loadHTMLString:htmlString baseURL:nil];
    [self.view addSubview:videoView];
    [videoView release];
}

它就像魅力一样,但我想要不同的行为。现在视频的缩略图出现在网络视图上(很好!)但是当我点击播放图标时,它会全屏打开。我需要在同一个窗口中播放,因为我需要显示更多内容。

任何线索如何制作?提前谢谢

【问题讨论】:

    标签: ios xcode


    【解决方案1】:

    如果有人仍然面临这个问题,下面是迄今为止我见过的最好的解决方案。像魅力一样工作。

    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

    【讨论】:

    • 有什么方法可以解决授权音乐视频无法播放的问题?
    • 你能快速添加答案吗?
    • 是否可以直接使用 NSString 而不是@"embed video"?我的意思是来自另一个视图的 NSString,例如来自 plist?
    • 这是否可以从 Web 视图顶部删除视频链接。
    • @Kesava 很好的答案。如何使用我的 UIButtons 处理播放器控件的点击?
    【解决方案2】:

    在斯威夫特中:

    let webView = UIWebView(frame:CGRectMake(10, 10,300, 200))
        webView.allowsInlineMediaPlayback = true
        webView.mediaPlaybackRequiresUserAction = false
        self.view.addSubview(self.webView)
    
        let embedHTML = "<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='300' height='200' src='http://www.youtube.com/embed/JW5meKfy323?enablejsapi=1&rel=0&playsinline=1&autoplay=1' frameborder='0'>"
        "        </body>"
        "</html>"
        webView.loadHTMLString(embedHTML, baseURL:NSBundle.mainBundle().resourceURL!)
    

    【讨论】:

      猜你喜欢
      • 2011-09-10
      • 2015-11-08
      • 2015-10-20
      • 2012-08-14
      • 2014-10-21
      • 2013-07-28
      • 2013-06-14
      • 2015-04-25
      • 2012-10-12
      相关资源
      最近更新 更多