3

現在、iPad から外部ディスプレイにビデオを出力すると、コントロールとすべてが外部ディスプレイに移動します。コントロールが外部ディスプレイ上にある間はムービーを制御できないため、これは役に立ちません。アプリのコード スニペットを次に示します。

これは画面設定コードです: (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];
}

これは、MPMoviePlayerViewController の作成です。

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

私も 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 番目の実装では、self.view と external_window の両方に追加すると、外部ディスプレイ (コントロール付き) にビデオが表示され、iPad の画面は、ムービー コントロールがフェードアウトしたときにステータス バーが消える以外は何も起こっていないように見えます。 . また、moviePlayer.view を self.view だけに追加しようとしましたが、iPad で映画を再生する前に、「テレビでコンテンツを表示しています」というメッセージの効果で何かがちらつきます。現在、ビデオはボタンを押すことで起動されます。シミュレーターと TV 出力オプションを使用すると、デバッグが容易になります。Xcode バージョン 3.2.5 と最新バージョンの iOS の実機。これはどのように修正できますか?iPad の YouTube アプリのように動作するはずです。

4

1 に答える 1

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]];      
}
于 2011-07-01T20:37:08.033 に答える