web-dev-qa-db-ja.com

UIWebViewの代わりにMPMoviePlayerControllerでYouTubeビデオを再生します

MPMoviePlayerControllerを使用して一部のyouTubeビデオをストリーミングしようとしていますが、いくつか問題があります。使用しているコードは非常にシンプルで、initWithContentURLにURLを渡すことで.m4vビデオを再生できます。ムービープレーヤーを起動すると、プレーヤーは表示されますが、約20秒後に消えます。シミュレーターで試してみると、サーバーが正しく構成されていないという警告ビューが表示されます。 Googleから特定の種類のビデオフィードを取得するためにURLで渡す必要がある引数はありますか?

NSURL *videoURL = [NSURL URLWithString:@"http://www.youtube.com/v/HGd9qAfpZio&hl=en_US&fs=1&"];
MPMoviePlayerController *moviePlayer;
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];

[moviePlayer play];

また、次のURLを試しました http://www.youtube.com/watch?v=HGd9qAfpZio

また、引数&format = 1を見て、両方の文字列の最後に追加しようとしましたが、運はありません。

88
jmurphy

独自のアプリ内でyoutubeビデオを再生する唯一の方法は、UIWebView'sコンテンツとして再生する映画のYoutubeの埋め込みタグでUIWebViewを作成することです。 UIWebViewは、埋め込みオブジェクトがYoutubeリンクであることを検出し、Webビューのコンテンツがビデオのyoutubeプレビューになります。ユーザーがプレビューをクリックすると、ビデオがMPMoviePlayerControllerに表示されます。これは、Muxecoidが提供したリンクで説明されている手法です( アプリケーション内でyoutubeビデオを再生する方法 )。これは(私の知る限り)youtubeビデオを再生する唯一の方法ですアプリケーション。 YouTubeのURLを-[UIApplication openURL:]に渡すことで、Youtubeアプリケーションを起動できますが、もちろんこれにより、多くの場合望ましくない独自のアプリケーションが閉じられます。

残念ながら、YouTubeはビデオファイルへの直接リンクを公開しないため、MPMoviePlayerControllerでYouTubeビデオを直接再生する方法はありません。

78
Bryan Henry

コードを使用している場合:

- (void)embedYouTube:(NSString*)url frame:(CGRect)frame {  
     NSString* embedHTML = @"\ 
        <html><head>\ 
     <style type=\"text/css\">\ 
     body {\ 
     background-color: transparent;\ 
     color: white;\ 
    }\ 
   </style>\ 
    </head><body style=\"margin:0\">\ 
       <embed id=\"yt\" src=\"%@\" type=\"application/x-shockwave-flash\" \ 
    width=\"%0.0f\" height=\"%0.0f\"></embed>\ 
       </body></html>";  
   NSString* html = [NSString stringWithFormat:embedHTML, url, frame.size.width, frame.size.height];  
   if(videoView == nil) {  
      videoView = [[UIWebView alloc] initWithFrame:frame];  
     [self.view addSubview:videoView];  
    }  
    [videoView loadHTMLString:html baseURL:nil];  
  }

ソース:

このリンクを参照してください

シミュレータではなくデバイスでテストしてください。シミュレータは常に青いボックスで疑問符を表示するため(クイックタイムプレーヤーはありません)。

26
Jimit

私のコメントで上に書いたように、私は取り組んでいたプロジェクトでこれをしなければなりませんでした。この問題を解決し、githubでコードを送信しました。

ソースを確認してフォークすることができます here

基本的にはyoutubeのURLを受け取り、iOS互換のすべてのビデオのURLを取得します。

これが助けになることを願っています!
乾杯

23
hellozimi

YouTubeの中にMPMoviePlayerControllerのビデオを置くことができた人に出会ったばかりです。今では可能に見えます。

LBYouTubeView

13
TPoschel

チューブビデオを再生するには、MPMoviePlayerにURLを渡す前にURLを抽出する必要があります。直接プレイすることはできません。

私のgithubリポジトリには、これのデモ実装があります。

見る:

https://github.com/DpzAtMicRO/IOSYoutubePlayer

試してみてください。これにより、他のビデオと同様にMPMoviePlayerに直接youtubeビデオをロードして再生できるようになり、かなり良いアプローチです。

編集:プロジェクトでこれを使用する前に、Readme.mdを十分に確認してください。

2
D_D

新しい埋め込みコードのiframeのsrc要素を取得して呼び出すのと同じくらい簡単です

[self.webView loadRequest:[NSURLRequest requestWithURL:self.url]];
1
jjxtra

Googleが提供するiOSアプリケーションにYouTubeビデオを埋め込む公式の方法があります。

Cocoapodsを介してライブラリをインストールします:pod "youtube-ios-player-helper"

インポート元:#import “YTPlayerView.h”UIViewを使用してクラスをYTPlayerViewに設定するか、YTPlayerViewのオブジェクトをプログラムで作成します。

動画を読み込む:[self.playerView loadWithVideoId:@"M7lc1UVf-VE"];

playVideoおよびstopVideoメソッドも利用できます。詳細については、 このリンク をご覧ください

0
Ganpat

次のリンクを確認してください。役立つと思います。

https://mobiletechfeast.blogspot.in/2014/08/youtube-player-for-ios.html

0
arango_86