19

Web 用のビデオ コンテンツを Flash 形式で持っているクライアントがいます。私の仕事は、彼らが iPhone アプリでビデオを表示できるようにすることです。

ステップ 1 は、これらのビデオを iPhone に適した Quicktime フォーマットに変換することだと認識しています。

次に、これらのファイルをホストする方法または場所をクライアントが把握できるように支援する必要があります。それが難しい場合は、YouTube でホストできると思います。

ただし、私の主な関心事は、ビデオをストリーミングするためにどのアプローチを取るかです。MPMoviePlayerController とストリームの URL を使用して UIWebView を起動することの長所と短所は何ですか? 違いはありますか?それらの1つは多かれ少なかれ寛容ですか?そのうちの 1 つは、より優れたユーザー エクスペリエンスですか? 私が遭遇すると予想される落とし穴はありますか?

iPhoneで動画を再生するのはかなり簡単だと思います。両方を試して、一方をフォールバックとして利用できるようにすることは合理的ですか?それとも時間の無駄でしょうか? 私はこれを少しスケジュールしようとしているので、これを行った人から実際の経験を聞きたい.

4

2 に答える 2

25

編集:この回答の私の元の例は、CGRectZeroのフレームでWebビューを初期化しました。これはiOS3.2まで機能しました。iOS 4以降、Webビューにはゼロ以外のフレームが必要です。そうでない場合、ビデオは再生されません。この変更を反映するために、以下の例を編集しました。


ここで受け入れられた答えは正確ではありません。実際、UIWebViewを使用してビデオをストリーミングすることができ、いくつかの点でMPMoviePlayerControllerよりも優れています。loadRequest:を介してUIWebViewにビデオファイル(mp4など)を要求するように指示すると、新しいウィンドウが開き、アプリ内でビデオがストリーミングされます。MPMoviePlayerControllerとは異なり、UIWebViewによって作成されたビデオウィンドウは、横向きまたは縦向きに回転できます。ビデオが終了すると、ユーザーはこのウィンドウを閉じてアプリに戻ることができます。


編集2:MPMoviePlayerViewControllerを使用して回転するビデオプレーヤーを実装できるようになったため、この回答で説明されている手法を使用してビデオにU​​IWebViewを使用する理由を考えることができなくなりました。


ヒント:UIWebViewはビデオを再生するための独自のウィンドウを作成するため、ビュー階層にUIWebViewを追加する必要はありません。UIWebViewオブジェクトを作成し、loadRequest:を呼び出すだけで、オブジェクトをaddSubview:に渡すことなくビデオを再生できます。

self.webView = [[[UIWebView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
NSURL *url = [NSURL URLWithString:@"http://www.jonathancoulton.com/music/thingaweek/CodeMonkey.mp3"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
于 2009-10-15T17:28:05.257 に答える
9

UIWebView は実際に動画を再生できません。UIWebview で Youtube ページに移動すると、iPhone の Youtube アプリが起動するだけです。これを特定の方法で行うと、ビデオの再生後にアプリに制御が戻ります。こちらをご覧ください:http: //iphoneincubator.com/blog/tag/uiwebview

単純なストリーミングのみを行う場合は、MPMoviePlayer コントローラーを使用することをお勧めします。開始するためのサンプル コードを次に示します。

NSString *url = @"http://www.example.com/path/to/movie.mp4";
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc]
                                        initWithContentURL:[NSURL URLWithString:url]];
[moviePlayer play];
于 2009-06-10T16:35:10.170 に答える