2011-01-06 20 views
3

現在、iPadから外部ディスプレイにビデオを出力するときに、コントロールとすべてを外部ディスプレイに移動します。これは、コントロールが外部ディスプレイにあるときにムービーを制御できないため、有用ではありません。アプリのコードスニペットをいくつか紹介します。ipadのコントロールで外部ディスプレイにビデオを出力するには?

これは画面のセットアップコードである:これはMPMoviePlayerViewControllerの作成である(setupExternalScreen呼ばれる方法)

if ([[UIScreen screens] count] > 1) { 
    external_disp = [[UIScreen screens] objectAtIndex:1]; 
    [external_disp setCurrentMode:[[external_disp availableModes] objectAtIndex:0]]; 
    self.external_window = [[UIWindow alloc] init]; 
    external_window.screen = external_disp; 
    [external_window makeKeyAndVisible]; 
} 

[self setupExternalScreen]; //Calls the code above 
MPMoviePlayerViewController *mpv = [[MPMoviePlayerViewController alloc] initWithContentURL:url]; 
[self presentMoviePlayerViewControllerAnimated:mpv]; 

IもMPMoviePlayerControllerを有し、また、これを試みました。

self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerDidFinish:) name:MPMoviePlayerDidExitFullscreenNotification object:[self moviePlayer]]; 
[self.view addSubview:moviePlayer.view]; 

if (!external_window) { 
    [self setupExternalScreen]; 
} 
if (external_window) { 
    [external_window addSubview:moviePlayer.view]; 
} 
[moviePlayer setControlStyle:MPMovieControlStyleDefault]; 

[moviePlayer setFullscreen:YES];// animated:NO]; 

if (![moviePlayer isPreparedToPlay]) [moviePlayer prepareToPlay]; 
[moviePlayer play]; 

現在、2番目の実装では、addi self.viewとexternal_windowの両方には、外部ディスプレイ(コントロール付き)にビデオが表示され、iPadの画面はムービーコントロールが消えたときに消えるステータスバー以外は何も起こっていないように見えます。私もmoviePlayer.viewをself.viewに追加しようとしました。そしてiPad上でムービーを再生する前に "tv on content"メッセージの効果をちらつきます。現在ビデオはボタンを押すことによって起動されます。シミュレータとTV出力オプションを使用するとデバッグが簡単になります。 Xcodeバージョン3.2.5とiOSの最新バージョンを実際のデバイスにインストールします。どのようにこれを修正することができますか?それはiPad上のYouTubeアプリのように動作するはずです。

答えて

2

簡単な方法は、UIWebViewを使用することです。それは自動的に外部モニタを検出し、そこにビデオを表示し、デバイスの標準的な再生制御を維持します。

ここではいくつかのサンプルコードです:

- (void)embedInternalVideo:(CGRect)frame { 
    NSBundle *bundle = [NSBundle mainBundle]; 
    NSString* html = @"<video src=\"sample_iPod.m4v\" width=640 height-480 controls autoplay></video>"; 
    if (videoView == nil) { 
     videoView = [[UIWebView alloc] initWithFrame:frame]; 
     [self.view addSubview:videoView]; 
    } 
    [videoView loadHTMLString:html baseURL:[bundle resourceURL]];  
} 
+0

は私が探していただけのものを、ブリリアント。 6ヶ月前に誰も解決策を投稿していないのは残念ですが、 – Kaili

+0

これはiOS9で動作しません – Chris

関連する問題