使用的是iOS 6不是打在iPhone应用程序嵌入式VIMEO视频(Embedded vimeo v

2019-08-16 15:28发布

我似乎无法得到任何iOS中6两者播放设备(IP4)和模拟器上的视频。

我已经是一个UIWebView设置在IB。 然后在我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上的视频设置,它是只允许在特定域名被托管,否则会显示错误消息。 所以,我有一些简单的HTML player.php成立,只是调用VIMEO嵌入代码。

当我去那个有一个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是问题,因为它没有在YT工作,要么所以一定是有什么我做错了让iOS 6的幸福吗? 我GOOGLE了一下周围,似乎我无法找到所有的任何解决方案,尽管我不认为这只是我这已经发生了。

提前致谢。

Answer 1:

为此,我不得不完全抛弃了UIWebView的。

我不知道,如果你得到这个自由VIMEO帐户,但在我们的PRO帐户,请在视频设置有一个为“视频文件”选项卡,并在底部有标有“HTTP实时流”现场并有实际的直接链接到您的视频。

然后代替的UIWebView的,我用MPMoviePlayerViewController播放视频。

添加MediaPlayer.framework到您的“链接二进制与图书馆”设置。 在具有一个UIImageView,一对夫妇的标签,以及播放按钮我的视图控制器的.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播放按钮将短暂出现。 随后的一个秒内全屏播放大约一秒钟打开,关闭,然后UIWebView的变白。

我还在测试围绕这个,到目前为止,已成功通过WiFi发挥我们最长的视频,1小时45分钟没有问题,在iOS 6和5.1。 但希望这将帮助其他人作为一个开始。



Answer 2:

您仍然可以使用的UIWebView通过注册从UIMoviePlayerController通知和处理相应的事件...

-(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
}


文章来源: Embedded vimeo video in iPhone app using iOS 6 not playing