2015-06-22 19 views
8

Chcę grać klipu wideo YouTube na iOS za pomocą YTPlayerView przewidzianego w https://developers.google.com/youtube/v3/guides/ios_youtube_helperKorzystanie YTPlayerView grać klipu wideo YouTube na iOS nie powiodło się z powodu błędu restrykcyjnym

Kiedy próbowałem grać w tym filmie z id = „Ri7-vnrJD3k” (https://www.youtube.com/embed/Ri7-vnrJD3k), otrzymałem komunikat o błędzie "Ten film zawiera treści z VEVO. Jest ograniczony do odtwarzania w niektórych witrynach. Oglądaj na YouTube". Pamiętaj, że nie ma takiego problemu podczas odtwarzania innych filmów.

Czy istnieje sposób rozwiązania powyższego problemu?

Mogę użyć iframe do odtworzenia wideo z pomyślnym wypełnieniem poniższego przykładowego kodu swift. Ale nie wiem, jak śledzić, kiedy użytkownik zaczyna odtwarzać wideo i kiedy wideo się kończy, ponieważ chcę wykonać inne niestandardowe działanie na podstawie tych informacji. Jeśli znasz jakieś rozwiązanie, czy możesz uprzejmie mnie powiadomić?

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

Odpowiedz

18

Poprzez ustawienie właściwości origin w moim playerVars udało mi się odtworzyć klip wideo.

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

Następnie należy zadzwonić pod numer loadWithVideoId:: w zwykły sposób.

YouTube

+1

dzięki JAL, działa idealnie. –

+0

Czy musisz ustawić pochodzenie na ogólny adres URL, czy też musisz ustawić źródło na adres URL materiału chronionego prawami autorskimi? Jeśli tak, w jaki sposób uzyskujesz adres URL materiału chronionego prawami autorskimi? Obraz wiele różnych filmów odtwarzanych w odtwarzaczuView. Co robisz? – Eric

+0

@Eric Odczytaj właściwość 'origin' w dokumentacji API: https://developers.google.com/youtube/player_parameters?hl=en. Nie ma nic wspólnego z adresem URL filmu, jest to środek bezpieczeństwa interfejsu API IFrame. – JAL

1

YTPlayerView inturn wykorzystuje ramki iframe do odtwarzania filmów z youtube. nie można używać w grze prawem autorskim iframe youtube można użyć UIWebView grać to jako alternatywny

+1

To jest nieprawidłowe. YTPlayerView to po prostu wrapper wokół UIWebView. – JAL

+0

@JAL Brak odtwarzania wideo z elementu pływającego w UIWebview również nie działa w przypadku filmów chronionych prawami autorskimi. Przykład: https: //www.youtube.com/embed/-cUSV8MCOLY? Autoplay = 1, jest to film chroniony prawami autorskimi i wklej go do przeglądarki internetowej. http://www.youtube.com/embed/XGSy3_Czz8k?autoplay=1 To jest zwykłe wideo wklej ten link w przeglądarce, to się odtworzy, ponieważ nie jest chronione prawem autorskim ....... Wklej link nie kliknij na niego, przekieruje Cię na stronę youtube inaczej –

+2

Autor może ograniczyć ich zawartość, aby nie grać na urządzeniach mobilnych lub uniemożliwić osadzanie w zewnętrznych witrynach internetowych, nie jest to jednak domyślne zachowanie dla wszystkich dzieł, które są chronione prawem autorskim. (Oczywiście, ponieważ wszystkie prace są chronione prawami autorskimi automatycznie, chyba że autor tej pracy wyraźnie umieścił tę pracę w domenie publicznej) –

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

Ta wersja Objective-C działa na mnie.