视频播放器

来源:互联网 发布:用c语言编写生日快乐 编辑:程序博客网 时间:2024/05/17 08:36
首先  添加MediaPlayer.framework 

在 ViewController.h 中导入#import <MediaPlayer/MediaPlayer.h>;

并在.h中建立属性 @property (nonatomicstrongMPMoviePlayerController *movie;

以上就是在开始和在.h中做的准备工作


接下来是.m中的代码 

我们首先定义三个按钮 一个是播放视频按钮 一个是暂停/停止按钮 一个是控制屏幕大小的按钮

或者还有一些其他的按钮  大家可以自己开发,我也验证过;

  按钮:

在 viewDidLoad中
UIButton *movie = [UIButton buttonWithType:UIButtonTypeCustom];
    movie.backgroundColor = [UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:0.5];
    [movie 
setTitle:@"MPMoviePlayerController" forState:UIControlStateNormal];
    [movie 
setTitleColor:[UIColor whiteColorforState:UIControlStateNormal];
    movie.
frame = CGRectMake(5010028050);
    [movie 
addTarget:self action:@selector(playMovie:) forControlEvents:UIControlEventTouchUpInside];
    movie.
layer.masksToBounds = YES;
    movie.
layer.cornerRadius = 10;
    movie.
layer.borderWidth = 1;
    [
self.view addSubview:movie];
    
// 停止按钮
    
UIButton *stop = [UIButton buttonWithType:UIButtonTypeCustom];
    stop.
backgroundColor = [UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:0.5];
    [stop 
setTitle:@"停止" forState:UIControlStateNormal];
    [stop 
setTitleColor:[UIColor whiteColorforState:UIControlStateNormal];
    stop.
frame = CGRectMake(5050028050);
    [stop 
addTarget:self action:@selector(stop) forControlEvents:UIControlEventTouchUpInside];
    stop.
layer.masksToBounds = YES;
    stop.
layer.cornerRadius = 10;
    stop.
layer.borderWidth = 1;
    [
self.view addSubview:stop];
    
// 横屏播放
    
UIButton *heng = [UIButton buttonWithType:UIButtonTypeCustom];
    heng.
backgroundColor = [UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:0.5];
    [heng 
setTitle:@"横屏" forState:UIControlStateNormal];
    [heng 
setTitleColor:[UIColor whiteColorforState:UIControlStateNormal];
    heng.
frame = CGRectMake(5060028050);
    [heng 
addTarget:self action:@selector(setupMovie) forControlEvents:UIControlEventTouchUpInside];
    heng.
layer.masksToBounds = YES;
    heng.
layer.cornerRadius = 10;
    heng.
layer.borderWidth = 1;
    [
self.view addSubview:heng];

三个按钮创建好了

接下来就是要实现视频播放这一功能

上面三个按钮  自带三个方法 想必大家都知道

一 丶 
我们就能在播放按钮中实现他的播放功能 


#warning 很重要的一点是在头文件里已经把player变为属性了,@propertynonamaic,strong),如果不写为属性就会黑屏;

1. 视频文件路径

播放本地
NSString *path = [[NSBundle mainBundle] pathForResource:@"程序上传--最新" ofType:@"mp4"];
    
// 视频URL
//    NSURL *url = [NSURL fileURLWithPath:path];
播放网络视频(就是给他一个视频网址再将网址转化为url)

 NSURL *url = [NSURL URLWithString:@"http://mv.hotmusique.com/mv_2_2/82/4e/82df0c842b919abc6059d73f273fc14e.mp4?k=2ca10756c2bba7e3&t=1424435660];

1.视频播放对象
self.movie = [[MPMoviePlayerController allocinitWithContentURL:url];

2.播放器样式
MPMovieControlStyleFullscreen 显示播放/暂停丶音量和时间控制
MPMovieControlStyleEmbedded 只显示音量控制
MPMovieControlStyleNone 没有控制器
self.movie.controlStyle = MPMovieControlStyleFullscreen;
3.播放器大小
self.movie.view.frame = CGRectMake(20200335200);
(self.movie.view.frame = CGRectMake(20,200,335,200);)
4.
    // 宽高比值
    
// MPMovieScalingModeNone            不做任何缩放

    
// MPMovieScalingModeAspectFit       适应屏幕大小,保持宽高比
    
// MPMovieScalingModeAspectFill      适应屏幕大小,保持宽高比,可裁剪
    
// MPMovieScalingModeFill            充满屏幕,不保持宽高比
    
self.movie.scalingMode = MPMovieScalingModeAspectFit;

[self.view addSubview:self.movie.view];


//    你的程序可以配置电影播放器在何时候发送通知,包括结束加载内容、技术播放、改变宽高比等。电影播放器会将事件发送到 Cocoa 的通知中心,你可以对其进行配置,指定将这些事件转发到你的应用程序的一个对象。要接收这些通知,需要使用 NSNotificationCenter 类,为电影播放器添加一个观察者(observer): 
    
    
// 注册一个播放结束的通知
    [[
NSNotificationCenter defaultCenteraddObserver:self
                                             
selector:@selector(myMovieFinishedCallback:)
                                                 
name:MPMoviePlayerPlaybackDidFinishNotification
                                               
object:self.movie];
    [
self.movie play];
    
    
}
// 在注册观察者模式中的函数实现
-(void)myMovieFinishedCallback:(NSNotification*)notify
{
    
//视频播放对象
    
MPMoviePlayerController* theMovie = [notify object];
    
//销毁播放通知
    [[
NSNotificationCenter defaultCenterremoveObserver:self
                                                    
name:MPMoviePlayerPlaybackDidFinishNotification
                                                  
object:theMovie];
    [theMovie.
view removeFromSuperview];
    
NSLog(@"自动播放下一个");

}
在停止/暂停按钮中
// 视频停止
- (
void)stop
{
    [
self.movie stop];
}
控制横屏的按钮中
// 横屏播放
-(
void)setupMovie
{
    
CGRect aFrame = [[UIScreen mainScreenapplicationFrame];
    aFrame = 
CGRectMake(0.0f0.0f, aFrame.size.width, aFrame.size.height);
    
self.movie.controlStyle = MPMovieControlStyleDefault;
    
self.movie.view.frame = aFrame;
    
self.movie.view.center = CGPointMake(aFrame.size.width/2, aFrame.size.height/2);
    
CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI/2);
    [
self.movie.view setTransform:transform];
    [[[[
UIApplication sharedApplicationdelegatewindowaddSubview:self.movie.view];
    
}


#pragma mark -------------------视频播放结束委托--------------------

0 0