web-dev-qa-db-ja.com

デバイスのフルスクリーンではなく、Uiwebview内にビデオを表示する

UIWebview内にビデオを表示したい。ビデオをクリックすると、デバイスの全画面で再生されます。

UIWebview内でビデオを再生するにはどうすればよいですか?これらのビデオファイルは、YouTubeまたは当社のサーバーでホストされていることに注意してください。それらはアプリと一緒にバンドルされていません

12
Naveen kumar

UIWebViewでビデオを再生するには、以下のコードを使用してください..。

NSString *strVedio = @"<video controls> <source src=\"YourVideo.mp4\"> </video>";
NSString *path = [[NSBundle mainBundle] pathForResource:@"YourVideo" ofType:@"mp4"];
[Webview loadHTMLString:strVedio baseURL:[NSURL fileURLWithPath:path]];

更新:

以下のコードを使用して、ビデオURLからUIWebViewにビデオを表示します。

  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 *strHtml = [NSString stringWithFormat:embedHTML, yourURLString, width,height];//set width and height which you want

  [webView loadHTMLString:strHtml baseURL:nil];
  [self.view addSubview:webView];

小さな画面のみでWebビューなしで表示する場合は、以下のコードを使用してください。

MPMoviePlayerController *videoPlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:url]];
[player setControlStyle:MPMovieControlStyleNone];

player.view.frame = CGRectMake(0, 0, 150, 150);

[self.view addSubview:videoPlayer.view];
0
Paras Joshi

UIWebViewクラスのこのプロパティを試してみるべきだと思います。

allowsInlineMediaPlayback

HTML5ビデオをインラインで再生するか、ネイティブのフルスクリーンコントローラーを使用するかを決定するブール値。

4
iNeal

UIWebView内でビデオをインラインで再生するという同じ要件がありました。さらに、ユーザーが再生ボタンを押すのを待たずに、すぐにビデオを再生する必要がありました。

これを実現するために、このプロパティをUIWebViewに追加しました。

webView.allowsInlineMediaPlayback = YES;

次に、組み合わせて、ビデオソースURLを提供しているWebページのHTML5ビデオ要素内に含まれる「webkit-playsinline」属性を追加する必要もあります。

<video src="assets/myMovie.m4v" webkit-playsinline></video>

Apple doc: https://developer.Apple.com/library/ios/documentation/UIKit/Reference/UIWebView_Class/index.html#//Apple_ref/doc/ uid/TP40006950-CH3-SW32

これは、フルスクリーンUIWebViewを作成するための完全なObj-Cの例です。これをUIViewControllerのviewDidLoadメソッドに追加します。

NSURL *websiteUrl = [NSURL URLWithString:@"http://example.com/myMovie.m4v"];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:websiteUrl];

UIWebView * webView = [[UIWebView alloc] init];
webView.allowsInlineMediaPlayback = YES;
webView.mediaPlaybackRequiresUserAction = NO;
webView.opaque = NO;
webView.backgroundColor = [UIColor clearColor];
[webView setTranslatesAutoresizingMaskIntoConstraints:NO];
[webView loadRequest:urlRequest];
[self.view addSubview:webView];

// Width constraint
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:webView
                                                      attribute:NSLayoutAttributeWidth
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:self.view
                                                      attribute:NSLayoutAttributeWidth
                                                     multiplier:1
                                                       constant:0]];

// Height constraint
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:webView
                                                      attribute:NSLayoutAttributeHeight
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:self.view
                                                      attribute:NSLayoutAttributeHeight
                                                     multiplier:1
                                                       constant:0]];

// Center horizontally
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:webView
                                                      attribute:NSLayoutAttributeCenterX
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:self.view
                                                      attribute:NSLayoutAttributeCenterX
                                                     multiplier:1.0
                                                       constant:0.0]];

// Center vertically
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:webView
                                                      attribute:NSLayoutAttributeCenterY
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:self.view
                                                      attribute:NSLayoutAttributeCenterY
                                                     multiplier:1.0
                                                       constant:0.0]];
3
Nate Flink