2013-04-08 6 views
15

बिना मैं आईओएसकैसे iOS पर YouTube वीडियो एम्बेड करने और UIWebView पर सीधे इसे खेलने पूर्ण स्क्रीन

- (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]; 

} 

यह आकर्षण की तरह काम करता पर यूट्यूब वीडियो खेलने के लिए इस कोड का उपयोग कर रहा हूँ, लेकिन मैं एक अलग व्यवहार करना चाहते हैं। अब वीडियो का एक थंबनेल वेबव्यू (अच्छा!) पर दिखाई देता है लेकिन जब मैं play आइकन टैप करता हूं तो यह पूर्ण स्क्रीन में खुलता है। मुझे उस विंडो में प्लेबैक की आवश्यकता है क्योंकि मुझे और सामान दिखाने की ज़रूरत है।

यह कैसे बनाते हैं इसका कोई संकेत? अग्रिम में Thansk

उत्तर

27

यदि कोई अभी भी इस समस्या का सामना कर रहा है, तो नीचे मैंने देखा है कि सबसे अच्छा समाधान है। एक जादू की तरह काम करता है।

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

+1

किसी भी तरह से तथ्य यह है कि लाइसेंस प्राप्त संगीत वीडियो खेला जा करने में असमर्थ हैं चारों ओर पाने के लिए? – user3781236

+0

क्या आप तेजी से जवाब जोड़ सकते हैं? – huddie96

+0

क्या @ "एम्बेड वीडियो" के बजाय सीधे एनएसएसटींग का उपयोग करना संभव है? मेरा मतलब है कि एक अन्य दृश्य से एनएसएसटींग, उदाहरण के लिए प्लेस्ट से? – Markus

0

स्विफ्ट में:

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!) 
संबंधित मुद्दे