2015-06-22 10 views
8

voglio riprodurre video di YouTube incorporato in iOS utilizzando YTPlayerView fornito al https://developers.google.com/youtube/v3/guides/ios_youtube_helperUtilizzando YTPlayerView per riprodurre video di YouTube incorporato in iOS non riuscita con errore restrizione

Quando ho provato a giocare questo video con ID = "Ri7-vnrJD3k" (https://www.youtube.com/embed/Ri7-vnrJD3k), ho ricevuto il messaggio di errore "Questo video contiene contenuti di VEVO. È limitato dalla riproduzione su determinati siti. Guarda su YouTube". Si noti che non vi è alcun problema durante la riproduzione di altri video.

Esiste un modo per risolvere il problema sopra riportato?

Potrei usare iframe per riprodurre il video in linea con successo con il codice swift di esempio. Ma non so come tenere traccia quando l'utente inizia a riprodurre il video e quando il video viene completato poiché voglio fare un'altra azione personalizzata basata su quelle informazioni. Se conosci qualche soluzione, potresti gentilmente farmi sapere?

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")) 

risposta

18

Impostando la proprietà origin nel mio playerVars ero in grado di riprodurre il video incorporato.

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

Quindi chiamare loadWithVideoId:: come si farebbe normalmente.

YouTube

+1

grazie JAL, funziona perfettamente. –

+0

Hai bisogno di impostare l'origine su un URL generico o hai bisogno di impostare l'origine dell'URL del materiale protetto da copyright? In tal caso, come recuperare l'URL del materiale protetto da copyright? Immagina molti video diversi che giocano nel playerView. cosa fai? – Eric

+0

@Eric Leggi sulla proprietà 'origin' nei documenti API: https://developers.google.com/youtube/player_parameters?hl=it. Non ha nulla a che fare con l'URL del video, è una misura di sicurezza per l'API IFrame. – JAL

1

YTPlayerView inturn utilizza iframe per riprodurre video di youtube. Non è possibile utilizzare iframe nella riproduzione di video protetti da copyright di YouTube è possibile utilizzare un UIWebView per giocare questo come alternativa

+1

Questo non è corretto. YTPlayerView è solo un wrapper attorno a UIWebView. – JAL

+0

@JAL Nessun video iframe in UIWebview non funziona anche per i video protetti da copyright. Es: https: //www.youtube.com/embed/-cUSV8MCOLY? Autoplay = 1, questo è un video protetto da copyright prova a incollarlo sul tuo browser. http://www.youtube.com/embed/XGSy3_Czz8k?autoplay=1 Questo è un normale video che incolla questo link nel tuo browser, questo giocherà dato che questo non è protetto da copyright ....... Incollare il link non fai clic su di esso, ti reindirizzerà alla pagina di YouTube altrimenti –

+2

Un autore può limitare il loro contenuto a non riprodurlo su dispositivi mobili o impedire l'incorporamento in siti Web esterni, questo non è, tuttavia, il comportamento predefinito per tutte le opere soggette a copyright. (Ovviamente, dato che tutte le opere sono automaticamente protette da copyright a meno che l'autore di quell'opera abbia esplicitamente inserito tale lavoro nel pubblico dominio) –

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

Questa versione Objective-C funziona per me.