4

iOS 6でビデオを再生できないようです。デバイス(iP4)とシミュレーターの両方で。

私が持っているのは、IBでのUIWebViewのセットアップです。それから私のviewDidLoad中には次のコードがあります:

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://domain.com/app/player.php?vid=%@", [videoDetails objectForKey:@"vid"]]];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[videoWebView loadRequest:requestObj];

説明するために、vimeoのビデオ設定では、特定のドメインでのみホストすることが許可されています。それ以外の場合は、エラーメッセージが表示されます。だから私はplayer.phpにvimeo埋め込みコードを呼び出すだけの簡単なHTMLを設定しています。

UIWebViewが表示されているビューに移動し、ビデオが読み込まれ、vimeoビデオに「再生」アイコンが表示されたら、それをクリックすると、ビデオに読み込みアイコンが表示され、約5〜10秒後に表示されます。秒、コンソールは以下を出力し、UIWebViewは白くなります。

コンソール出力:

2013-01-30 16:50:11.809 My App[2807:907] [MPAVController] Autoplay: Enabling autoplay
2013-01-30 16:50:11.821 My App[2807:907] [MPAVController] Autoplay: Skipping autoplay, disabled (for current item: 0, on player: 1)
2013-01-30 16:50:11.831 My App[2807:907] [MPAVController] Autoplay: Enabling autoplay
2013-01-30 16:50:12.042 My App[2807:907] [MPCloudAssetDownloadController] Prioritization requested for media item ID: 0
2013-01-30 16:50:21.254 My App[2807:907] [MPAVController] Autoplay: Skipping autoplay, disabled (for current item: 0, on player: 1)
2013-01-30 16:50:22.000 My App[2807:907] [MPAVController] Autoplay: Enabling autoplay
2013-01-30 16:50:22.244 My App[2807:907] [MPAVController] Autoplay: Disabling autoplay for pause
2013-01-30 16:50:22.246 My App[2807:907] [MPAVController] Autoplay: Disabling autoplay
2013-01-30 16:50:22.354 My App[2807:907] [MPAVController] Autoplay: Disabling autoplay
2013-01-30 16:50:22.591 My App[2807:907] [MPAVController] Autoplay: Enabling autoplay
2013-01-30 16:50:22.593 My App[2807:907] [MPAVController] Autoplay: Skipping autoplay, disabled (for current item: 0, on player: 1)
2013-01-30 16:50:22.655 My App[2807:907] [MPAVController] Autoplay: Enabling autoplay
2013-01-30 16:50:22.973 My App[2807:907] [MPAVController] Autoplay: Enabling autoplay
2013-01-30 16:50:23.057 My App[2807:907] [MPAVController] Autoplay: Skipping autoplay, disabled (for current item: 0, on player: 1)

iOS 5では、ビデオは期待どおりに再生されます。問題は、これはvimeoだけに関係しているのではないということです。私は次のことを試しました:

Vimeoランダムパブリックビデオ(domain.comでホストされているファイルに埋め込まれていません)

NSString *htmlStringToLoad = [NSString stringWithFormat:@"http://player.vimeo.com/video/32424117?title=0&byline=0&portrait=0&width=320&height=181&frameborder=0"];
[videoWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:htmlStringToLoad]]];

そして再びYouTubeで:

[videoWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.youtube.com/watch?v=dABo_DCIdpM"]]];

私の唯一の懸念は、Vimeoビデオがすべて保存されている場所であるため、Vimeoビデオで動作させることです。しかし、ここではvimeoが問題になっているのはわかりません。これは、YTでも機能しないため、iOS 6を満足させるために何か間違ったことをしているに違いありませんか?私は少しグーグルで検索しましたが、これが起こったのは私だけではないと思いますが、解決策をまったく見つけることができないようです。

前もって感謝します。

4

2 に答える 2

9

このために、私はUIWebViewを完全に捨てなければなりませんでした。

無料のvimeoアカウントでこれを取得できるかどうかはわかりませんが、PROアカウントでは、ビデオ設定に「ビデオファイル」のタブがあり、下部に「HTTPライブストリーミング」というラベルの付いたフィールドがあり、実質的に直接あなたのビデオへのリンク。

そして、UIWebViewの代わりに、MPMoviePlayerViewControllerを使用してビデオを再生しました。

MediaPlayer.frameworkを「LinkBinaryWithLibraries」設定に追加します。UIImageView、いくつかのラベル、および再生ボタンを含むView Controllerの.hファイルで、#import <MediaPlayer/MediaPlayer.h>プロパティをインポートして設定しました@property(nonatomic, readonly) MPMoviePlayerViewController *player;

次に、.mファイルで:

-(IBAction)playVideo:(id)sender{
    NSString *videoString = @"http://player.vimeo.com/external/THE_VIDEO_ID.m3u8?p=standard,mobile&s=UNIQUE_VALUE_FOR_EACH_VIDEO";
    player = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:videoString]];
    [player.moviePlayer prepareToPlay];
    [player.view setFrame: self.view.bounds];
    [self.view addSubview: player.view];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MPMoviePlayerDidExitFullscreen:) name:MPMoviePlayerDidExitFullscreenNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MPMoviePlayerDidExitFullscreen:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
    [player.moviePlayer play];
}

- (void)MPMoviePlayerDidExitFullscreen:(NSNotification *)notification{
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerDidExitFullscreenNotification object:nil];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
    [player.moviePlayer stop];
    [player.moviePlayer.view removeFromSuperview];
}

HTTPライブストリームURLをUIWebViewにロードしようとしましたが、機能しないようです。真ん中にvimeo再生ボタンがある黒い画面が短時間表示されます。次に、その1秒以内に、フルスクリーンプレーヤーが約1秒間開き、閉じてから、UIWebViewが白になります。

私はまだこれを試していますが、これまでのところ、iOS6および5.1のWiFi経由で問題なく1時間45分の最長のビデオを再生することができました。しかし、うまくいけば、これは他の人を出発点として助けるでしょう。

于 2013-02-01T09:55:06.913 に答える
1

UIMoviePlayerControllerからの通知に登録し、対応するイベントを処理することで、UIWebviewを引き続き使用できます...

-(void)viewDidLoad
{

...

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoStarted:)   name:@"UIMoviePlayerControllerDidEnterFullscreenNotification" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoFinished:) name:@"UIMoviePlayerControllerDidExitFullscreenNotification" object:nil];
}

-(void)videoStarted:(NSNotification *)notification{
// your code here
}

-(void)videoFinished:(NSNotification *)notification{
// your code here
}
于 2013-05-13T14:22:35.677 に答える