在YouTube应用程序中嵌入YouTube视频

时间:2013-07-29 01:53:40

标签: iphone ios youtube-api

我是IOS应用程序开发的新手。我已经使用UIWebview和来自youtube的嵌入代码添加了在我的应用中嵌入Youtube视频的代码。但是当我在我的模拟器中运行应用程序时,webview只是空白。我没有看到任何视频缩略图或其他任何内容。我听说youtube视频无法在iPhone模拟器上运行,但此链接(“http://www.youtube.com/embed/36db4r3MsgU”)表明视频在模拟器中播放完美。请仔细研究这个链接并建议我一个解决方案。

NSString *code = @"<iframe width=\"640\" height=\"360\" src=\"http://www.youtube.com/embed/36db4r3MsgU?feature=player_detailpage\" frameborder=\"0\" allowfullscreen></iframe>";
[[self video]loadHTMLString:code baseURL:nil];

谢谢, Abilash.G

8 个答案:

答案 0 :(得分:10)

无需使用嵌入代码。针对youtube网址的标准UIWebView应该可以正常工作......

// URL from safari address bar. 
NSURL *url = [NSURL URLWithString:@"http://www.youtube.com/watch?v=fDXWW5vX-64"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];

答案 1 :(得分:7)

@danh回答确实有效,但它将youtube的移动网页与youtube播放器嵌入,这需要占用大量空间而且看起来很糟糕。最好的选择是按照Youtube Api博客中的说明操作:

更新:由于youtube现在使用其api的v3,这里是一个带有官方指示的新链接:https://developers.google.com/youtube/v3/guides/ios_youtube_helper

答案 2 :(得分:4)

在iOS 8中,它开始以不同的方式工作,并在WebView中添加了填充。我发布了这个问题的答案,这适用于iOS 9和Xcode 7。填充(-8px)可能需要根据您的需要进行调整,但一般来说它的工作效果非常好。

您需要做的就是从任何YouTube视频中获取代码(任何YouTube视频网址中的最后一个字符)

See post here.

以下是代码:

    CGFloat width = self.webView.frame.size.width;
    CGFloat height = self.webView.frame.size.height;
    NSString *youTubeVideoCode = @"dQw4w9WgXcQ";
    NSString *embedHTML = @"<iframe width=\"%f\" height=\"%f\" src=\"http://www.youtube.com/embed/%@\" frameborder=\"0\" style=\"margin:-8px;padding:0;\" allowfullscreen></iframe>";
    NSString *html = [NSString stringWithFormat:embedHTML, width, height, youTubeVideoCode];
    self.webView.scrollView.bounces = NO;
    [self.webView loadHTMLString:html baseURL:[NSURL URLWithString:@"http://www.youtube.com"]];

答案 3 :(得分:2)

我在我的应用中使用了这个。这不使用任何webview

https://www.cocoacontrols.com/controls/hcyoutubeparser

NSURL *urlOfYouTube = [NSURL URLWithString:@"http://www.youtube.com..."];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:urlOfYouTube];
[self.webView loadRequest:requestObj];

答案 4 :(得分:2)

Google提供了一个帮助,可以在iOS应用中嵌入和控制YouTube视频。请查看此处的文档:https://developers.google.com/youtube/v3/guides/ios_youtube_helper

答案 5 :(得分:1)

//我的UIWebview被命名为&#34; videoYoutube&#34;在下面的这个例子中 // UIWebview size = 320x180 //以下内容将设置指南的宽度...或接近指南,并根据设备大小进行缩放。

    let bounds = UIScreen.mainScreen().bounds
    let width = bounds.size.width - 18
    let height = bounds.size.width / 1.8
    let frame = 0

    let youtubeVideolink = "https://www.youtube.com/embed/Rg6GLVUnnpM"

    let Code:NSString = "<iframe width=\(width) height=\(height) src=\(youtubeVideolink) frameborder=\(frame) allowfullscreen></iframe>"

    self.videoYoutube.loadHTMLString(Code as String, baseURL: nil)

答案 6 :(得分:1)

在swift 4中太容易了

let url = URL(string: "http://www.youtube.com/watch?v=fDXWW5vX-64")

let request = URLRequest(url: url!)

webView?.load(request)

答案 7 :(得分:0)

对于第一个建议的答案,我遇到了一些问题,例如整个youtube页面已加载以修复我使用了一些额外的代码,代码是

NSString *baseUrl = [NSString stringWithFormat:@"%@%@",@"http://www.youtube.com/watch?v=",embedCode];
    NSURL *url = [NSURL URLWithString:baseUrl];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    videoWebView = [[UIWebView alloc] initWithFrame:imageview.frame];
    [videoWebView loadRequest:request];
    [videoWebView setNeedsLayout];
    [videoWebView setAllowsInlineMediaPlayback:YES];
    videoWebView.mediaPlaybackRequiresUserAction = YES;
    videoWebView.scrollView.scrollEnabled = NO;
    videoWebView.scrollView.bounces = NO;
    [self.contentView addSubview:videoWebView];