2015-06-22 11 views
8
Einschränkung Fehlern fehlgeschlagen spielen

ich eingebettetes YouTube-Video in iOS App YTPlayerView bei https://developers.google.com/youtube/v3/guides/ios_youtube_helperYTPlayerView Verwendung zu eingebettetem YouTube-Video in iOS mit

bereitgestellt spielen will, wenn ich dieses Video mit ID = "Ri7-vnrJD3k" zu spielen versucht (https://www.youtube.com/embed/Ri7-vnrJD3k), habe ich die Fehlermeldung "Dieses Video enthält Inhalte von VEVO. Es ist von der Wiedergabe auf bestimmten Websites eingeschränkt. Beobachten Sie auf YouTube". Beachten Sie, dass bei der Wiedergabe einiger anderer Videos kein Problem auftritt.

Gibt es eine Möglichkeit, das oben genannte Problem zu beheben?

Ich könnte Iframe verwenden, um das Video inline erfolgreich mit unter Beispiel Swift-Code zu spielen. Aber ich weiß nicht, wie ich nachverfolgen kann, wenn der Benutzer mit der Wiedergabe des Videos beginnt und wenn das Video abgeschlossen ist, da ich aufgrund dieser Informationen weitere benutzerdefinierte Aktionen ausführen möchte. Wenn Sie irgendeine Lösung kennen, können Sie mich bitte wissen lassen?

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

Antwort

18

zu spielen Durch die Einstellung der origin Eigenschaft in meinem playerVars konnte ich verwenden können, das eingebettete Video spielen.

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

Dann rufen Sie loadWithVideoId:: wie Sie normalerweise würden.

YouTube

+1

Dank JAL, es funktioniert perfekt. –

+0

Müssen Sie den Ursprung auf eine generische URL setzen oder müssen Sie den Ursprung auf die URL des urheberrechtlich geschützten Materials setzen? Wenn ja, wie hole ich die url des urheberrechtlich geschützten Materials? Image viele verschiedene Videos in der PlayerView spielen. Wie geht's? – Eric

+0

@Eric Lesen Sie in der API-Dokumentation die Eigenschaft 'Herkunft': https://developers.google.com/youtube/player_parameters?hl=de. Es hat nichts mit der URL des Videos zu tun, es ist eine Sicherheitsmaßnahme für die IFrame-API. – JAL

1

YTPlayerView inturn verwendet iframes, um Youtube-Video abzuspielen. Sie können nicht in Spielen urheberrechtlich geschützt YouTube-Videos verwenden iframe Sie UIWebview dies als Alternative

+1

Dies ist falsch. Das YTPlayerView ist nur ein Wrapper um ein UIWebView. – JAL

+0

@JAL Das Abspielen eines Iframe-Videos in UIWebview funktioniert auch nicht für urheberrechtlich geschützte Videos. Beispiel: https: //www.youtube.com/embed/-cUSV8MCOLY? Autoplay = 1, dies ist ein urheberrechtlich geschütztes Video, das Sie in Ihrem Browser einfügen können. http://www.youtube.com/embed/XGSy3_Czz8k?autoplay=1 Dies ist ein normales Video, das diesen Link in Ihrem Browser einfügt, dies wird abgespielt, da dies nicht urheberrechtlich geschützt ist ....... Fügen Sie den Link nicht ein Klicken Sie darauf, um zur YouTube-Seite weitergeleitet zu werden. Sonst –

+2

Ein Autor kann seinen Inhalt so einschränken, dass er nicht auf Mobilgeräten abgespielt wird oder das Einbetten in externe Websites verhindert. Dies ist jedoch nicht das Standardverhalten für alle Werke, die urheberrechtlich geschützt sind. (Offensichtlich, da alle Werke urheberrechtlich geschützt sind, es sei denn, der Autor dieser Arbeit hat diese Arbeit explizit in der Öffentlichkeit veröffentlicht) –

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

Diese Objective-C Version für mich funktioniert.