2015-06-22 8 views
8

मैं https://developers.google.com/youtube/v3/guides/ios_youtube_helperआईओएस में एम्बेडेड यूट्यूब वीडियो खेलने के लिए YTPlayerView का उपयोग प्रतिबंध त्रुटि के साथ विफल

पर प्रदान की जाती YTPlayerView का उपयोग कर iOS एप्लिकेशन में एम्बेडेड यूट्यूब वीडियो खेलने चाहते हैं जब मैं आईडी = "Ri7-vnrJD3k" के साथ इस वीडियो को चलाने की कोशिश की (https://www.youtube.com/embed/Ri7-vnrJD3k), मुझे त्रुटि संदेश मिला "इस वीडियो में वेवो से सामग्री शामिल है। यह कुछ साइटों पर प्लेबैक से प्रतिबंधित है। YouTube पर देखें"। ध्यान दें कि कुछ अन्य वीडियो चलाते समय ऐसी कोई समस्या नहीं है।

क्या उपर्युक्त मुद्दे को हल करने का कोई तरीका है?

मैं नीचे नमूना स्विफ्ट कोड के साथ वीडियो इनलाइन सफलतापूर्वक चलाने के लिए iframe का उपयोग कर सकता हूं। लेकिन मुझे नहीं पता कि जब उपयोगकर्ता वीडियो चलाने के लिए शुरू होता है और जब वीडियो पूरा होता है तब से मैं ट्रैक करता हूं क्योंकि मैं उन जानकारी के आधार पर अन्य कस्टम कार्रवाई करना चाहता हूं। अगर आपको कोई समाधान पता है, तो क्या आप कृपया मुझे बता सकते हैं?

let frame = CGRectMake(0,0, self.view.frame.size.width, 240) 
playerView = UIWebView(frame: frame) 
playerView.allowsInlineMediaPlayback = true 

var embedHTML = NSString(format: "<html><head><style type=\"text/css\"> body { background-color: transparent; color: white; margin:0; width:100%%; height:100%% } </style> </head><body style=\"margin:0\"> <iframe width=100%% height=100%% src=\"%@?feature=player_detailpage&playsinline=1\" frameborder=\"0\" ></iframe> </body></html>", self.url.text) 

self.view.addSubview(playerView) 
playerView.loadHTMLString(embedHTML as String, baseURL: NSURL(string: "http://www.youtube.com")) 

उत्तर

18

के रूप में इस खेलने के लिए मेरी playerVars मैं एम्बेडेड वीडियो खेलने के लिए सक्षम था में origin संपत्ति की स्थापना करके एक UIWebView का उपयोग कर सकते हैं।

let playerVars = [ 
        "playsinline" : 1, 
        "showinfo" : 0, 
        "rel" : 0, 
        "modestbranding" : 1, 
        "controls" : 1, 
        "origin" : "https://www.example.com" 
       ] 

फिर loadWithVideoId:: पर कॉल करें जैसा कि आप सामान्य रूप से करेंगे।

YouTube

+1

धन्यवाद जेएएल, यह पूरी तरह से काम करता है। –

+0

क्या आपको मूल को सामान्य जेआरएल पर सेट करने की आवश्यकता है या क्या आपको मूल सामग्री को कॉपीराइट सामग्री के यूआरएल पर सेट करने की आवश्यकता है? यदि हां, तो आप कॉपीराइट की गई सामग्री के यूआरएल कैसे प्राप्त करते हैं? प्लेयर व्यू में खेल रहे कई अलग-अलग वीडियो। आप क्या करते हैं? – Eric

+0

@Eric एपीआई दस्तावेज़ों में 'मूल' संपत्ति पर पढ़ें: https://developers.google.com/youtube/player_parameters?hl=hi। इसका वीडियो के यूआरएल से कोई लेना देना नहीं है, यह आईफ्रेम एपीआई के लिए एक सुरक्षा उपाय है। – JAL

1

YTPlayerView inturn यूट्यूब वीडियो चलाने के लिए iframes का उपयोग करता है। आपको कॉपीराइट यूट्यूब वीडियो खेलने में iframe उपयोग नहीं कर सकते कि किसी वैकल्पिक

+1

यह गलत है। YTPlayerView एक UIWebView के आस-पास सिर्फ एक रैपर है। – JAL

+0

@JAL UIWebview में एक आईफ्रेम वीडियो नहीं खेलना कॉपीराइट किए गए वीडियो के लिए भी काम नहीं करता है। पूर्व: https: //www.youtube.com/embed/-cUSV8MCOLY? Autoplay = 1, यह एक कॉपीराइट किया गया वीडियो है और इसे अपने ब्राउज़र पर पेस्ट करें। http://www.youtube.com/embed/XGSy3_Czz8k?autoplay=1 यह एक सामान्य वीडियो है जो इस ब्राउज़र को आपके ब्राउज़र में पेस्ट करता है, यह खेलेंगे क्योंकि यह कॉपीराइट नहीं है ....... लिंक पेस्ट करें उस पर क्लिक करें, यह आपको यूट्यूब पेज पर रीडायरेक्ट करेगा अन्यथा –

+2

कोई लेखक अपनी सामग्री को मोबाइल उपकरणों पर नहीं चलाने या बाहरी वेबसाइटों में एम्बेडिंग को रोकने के लिए प्रतिबंधित कर सकता है, हालांकि, कॉपीराइट किए गए सभी कार्यों के लिए यह डिफ़ॉल्ट व्यवहार नहीं है। (जाहिर है, क्योंकि सभी कार्यों को स्वचालित रूप से कॉपीराइट किया जाता है जब तक कि उस कार्य के लेखक ने सार्वजनिक डोमेन में उस कार्य को स्पष्ट रूप से नहीं रखा है) –

2
NSDictionary *playerVars = @{ 
          @"origin" : @"http://www.youtube.com", 
          }; 
[self.playerView loadWithVideoId:@"videoId" playerVars:playerVars];` 

यह ऑब्जेक्टिव-सी संस्करण मेरे लिए काम करता है।

संबंधित मुद्दे