-1

私はブラウザアプリに取り組んでいます.ユーザーがyoutube.comでビデオを検索すると、ビデオはフルスクリーンで再生されますが、固定サイズの小さなフレームでビデオを開く必要があります.電話の画面サイズの半分と言います.

ビデオの URL とビデオ ID があります。YOUTube API を統合しましたが、YouTube プレーヤーの再生ボタンを押すとすぐにフルスクリーンで再生されます。

統合のコードベースを見つけてください

self.playerView = [[YTPlayerView alloc]init];
self.playerView.frame = webView.frame;
[self.playerView loadWithVideoId:str];

[webView.superview addSubview:self.playerView];

YouTubeプレーヤーが追加され再生ボタンをタップした後のスクリーンショットを見つけてください

助けていただければ幸いです。

4

2 に答える 2

1

@パイロ

setallowsInlineMediaPlayback は ipad でのみ機能します。既に有効にしています。現在は機能しており、ビデオの再生は許可されていません。

実装後のイメージ

于 2016-03-27T17:19:26.547 に答える
1

プロジェクトに という名前MainViewControllerのコントローラがありますか。そのコントローラには の問題があるはずYTPlayerViewです。ビュー コントローラでこのビューを確認してください。
ほとんどの場合、コードで直接使用するクラスでは定義されません


コードで問題を検索すると、ビデオをインラインで再生するのに役立つ UIWebview のプロパティが見つかりましたsetAllowsInlineMediaPlayback

これにより、webview で YouTube ビデオを直接再生できます。YouTube ビデオの再生に使用できるコード サンプルを次に示します。

 NSString *strVideoId = @"M7lc1UVf-VE";
 NSString *videoURL = [NSString stringWithFormat:@"https://www.youtube.com/embed/%@?feature=player_detailpage&playsinline=1",strVideoId];

 NSString* embedHTML = [NSString stringWithFormat:@"\
                           <html><head>\
                           <style type=\"text/css\">\
                           iframe {position:absolute; top:50%%; margin-top:-130px;}\
                           body {\
                           background-color: transparent;\
                           color: white;\
                           }\
                           </style>\
                           </head><body style=\"margin:0\">\
                           <iframe width=\"100%%\" height=\"240px\" src=\"%@\" frameborder=\"0\"></iframe>\
                           </body></html>",videoURL];

[self.mainwebview setAllowsInlineMediaPlayback:true];
[self.view addSubview:self.mainwebview];
[self.mainwebview loadHTMLString:embedHTML baseURL:nil];

loadWithVideoIdこのコードでは、YTPlayerView で渡していた任意のビデオ ID を渡すことができます
。幅/高さを変更するにwidth=\"100%%\" height=\"240px\"は、iframe の部分を変更できます。

それはiPhoneでも私のために働いていますが、これは次のようになっています: iframe youtube play in setAllowsInlineMediaPlaybackiPhone

スクリーンショットに表示されている画像は、特定のビデオの問題のように見えます 注:このコードは必要ないため、このコードが機能する場合は、他の場所で使用されていない場合はプロジェクトからYTPlayerView削除できますYTPlayerView


更新一部のビデオが再生されない: この問題は特定の実装とは何の関係もないと思います。私にとっては、ブラウザー (iFrame に設定している埋め込み URL を使用) または YTPlayerview でも
機能しないためです。実装におけるいくつかの問題と、あなたが言及したように:

はい、すべての動画は YTPlayerView で動作しました。これらのビデオは通常の全画面モードで動作しますが、埋め込みプレーヤーでは動作しません

YTPlayerview に実装する場合は、次のコードを確認できます。

NSString *strVideoId = @"3bMYgo_S0Kc";
self.playerView = [[YTPlayerView alloc]init];
self.playerView.frame = CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height/2);
[self.playerView loadWithVideoId:strVideoId playerVars:@{@"playsinline":@1}];
[_mainwebview addSubview:self.playerView];
[self.mainwebview setAllowsInlineMediaPlayback:true];
[self.view addSubview:self.mainwebview];

では、loadWithVideoId全画面表示の問題を解決できるインライン パラメータを提供できます。これは iPhone でも機能する可能性があります。

このビデオは YTPlayer またはブラウザ (埋め込み URL) では動作しないことに注意してください。ただし、コメントに基づいて、これを試すことができます。

于 2016-03-26T08:51:07.867 に答える