介绍:

1.首先要说的是:苹果下面的视频播放一般使用m3u8和mp4的格式,其中最好是m3u8的格式

2.获取移动端视频的链接,可靠的方式是这个网址获取:http://flv.cn。使用见它们的官网

3.苹果端播放视频,一般使用UIWebView


好了,下面我们开始说视频播放。

首先,我是使用UIWebView,代码见下面:

webViewIntro = [[UIWebView alloc] initWithFrame:CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height - 64)];// iPad 或者 iPhone
        webViewIntro = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)]; // iPhone



webViewIntro.scrollView.scrollEnabled = NO;
        webViewIntro.allowsInlineMediaPlayback = YES;
        webViewIntro.mediaPlaybackRequiresUserAction = NO;
        webViewIntro.scrollView.showsVerticalScrollIndicator = NO;
        [self.tabBarController.view addSubview:webViewIntro];




一、具体UIWebView加载在哪个父View上面和是否为全局变量,依靠各位自己的需要


上面有一个注意:就是**自动播放**,如果需要打开链接就自动播放,那么

webViewIntro.allowsInlineMediaPlayback = YES;
        webViewIntro.mediaPlaybackRequiresUserAction = NO;

这两行代码是不可以少的。如果不需要自动播放,用户手动点击播放,可以去掉。当然自动播放加上这两个还是不够的,下面再说。


二、如果是ios系统,即在手机上面进行播放,那么我们可以这样定义html5页面:

strVideoAddress = [NSString stringWithFormat:
                           @"<!DOCTYPE HTML><html><body><video tabindex='0' width='0' height='0' controls='controls' autoplay='autoplay'><source src='%@'></video></body></html>",
                           str];



上面就是对html5的代码进行拼接。如果你需要用户点击一个按钮直接进行全屏播放可以使用上面的代码。注意,上面用一个参数:

controls='controls' autoplay='autoplay'

如果你需要用户点击之后直接播放,这个也是不能够少的,和上面说的那两行代码一起使用就就可以实现自动全屏播放了。

上面您们可能已经注意到,width='0' height='0'。是的,这是用来迷惑用户的。这样,就可以使得UIWebView不显示出来,用户没有点击视频播放的按钮,全可以直接进入视频全屏观看。

当然,如果您是使用iPad,就需要这样定义html字符串了:

strVideoAddress = [NSString stringWithFormat:
                          @"<!DOCTYPE HTML><html><body><video tabindex='0' width='%f'  controls='controls' autoplay='autoplay'><source src='%@'></video></body></html>", KWidth - 16, str];



是的,需要一个宽度,高度会一句视频大小自适应。如果还是和iPhone一样的话,那样你就看不到视频了,一片空白,原因还是那样,iPad没有全屏播放,所以视频是在网页UIWebView里面的。


三、如果是iPad用户,那么可以的一个,视频没有全屏观看的功能,这个时候,

所以这里开始介绍上面的

webViewIntro = [[UIWebView alloc] initWithFrame:CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height - 64)];// iPad 或者 iPhone
        webViewIntro = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)]; // iPad





两行代码:

如果是iPhone用户,你可以让用户自己点击播放,也可以系统直接全屏播放,所以UIWebView的frame定义有两种,其中一种就是frame都是0,这样用户就看不到UIWebView界面而直接进入视频全屏播放界面。

如果是iPad用户,没有视频全屏播放界面,所以,需要定义UIWebView的大小。

四、然会就是

[webViewIntro loadHTMLString:strVideoAddress baseURL:[NSURL URLWithString:nil]];

这样,就可以将自己的html代码,用UIWebView进行播放了。


五:

如果你自定义了一个按钮,想对UIWebView进行删除页面从而停止视频播放和删除UIWebView界面。那么如果你调用[webViewIntro removeFromSubView]方法,你会发现,呵呵,视频不见了,声音还在,是的,就是说,即使UIWebView已经remove了,但是,视频还是在后台播放。这和内存有关,我会在另一个博客里详细介绍。

所以我们使用下面的代码,想视频完全停止:

[webViewIntro loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];

这样,就可以将视频停止播放了。

备注:这里有个小建议,如果视频可以不remove的话,可以不用remove,直接

[webViewIntro setHidden:YES];

就可以了,在需要的使用,再将hidden设置为NO。这样用户操作可以快很多。


下面还有两个可以送给大家:

想来大家都想获取到视频什么时候开始播放,什么时候开始停止,可以用下面的代码获取:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(vedioStarted:) name:@"UIMoviePlayerControllerDidEnterFullscreenNotification" object:nil];// 播放器即将播放通知
   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(vedioFinished:) name:@"UIMoviePlayerControllerWillExitFullscreenNotification" object:nil];// 播放器即将退出通知

但是!BUT!这里给大家一个坏消息。在ios8之后,这个方法已经不能用了,至今还没有有效的方法可以获取到视频的轨迹。有人说用javascript可以,本人没有试验过。上面的两个通知方法,希望大家不要在用了。