您的位置:首页 > 产品设计 > 产品经理

iOS播放视频 MPMoviePlayerViewController 和 MPMoviePlayerController 使用说明

2015-09-27 20:48 721 查看
iOS播放视频文件一般使用 MPMoviePlayerViewController 和 MPMoviePlayerController。这两者的区别就是MPMoviePlayerViewController里面包含了一个MPMoviePlayerController

先说MPMoviePlayerController

首先要包含 #import <MediaPlayer/MediaPlayer.h>头文件和MediaPlayer.framework。

- (void)createMPPlayerController:(NSString *)sFileNamePath {

NSURL *movieURL = [NSURL fileURLWithPath:sFileNamePath];

MPMoviePlayerController *movewController =[[MPMoviePlayerController alloc] initWithContentURL:movieURL];

[movewController prepareToPlay];

[self.view addSubview:movewController.view];//设置写在添加之后 // 这里是addSubView

movewController.shouldAutoplay=YES;

[movewController setControlStyle:MPMovieControlStyleDefault];

[movewController setFullscreen:YES];

[movewController.view setFrame:self.view.bounds];

这里注册相关操作的通知

[[NSNotificationCenter defaultCenter] addObserver:self

selector:@selector(movieFinishedCallback:)

name:MPMoviePlayerPlaybackDidFinishNotification

object:moveViewController.movewController]; //播放完后的通知

[movewController release];

}

-(void)movieFinishedCallback:(NSNotification*)notify {

MPMoviePlayerController* theMovie = [notifyobject];

[[NSNotificationCenterdefaultCenter] removeObserver:self

name:MPMoviePlayerPlaybackDidFinishNotification

object:theMovie];

[theMovie.view removeFromSuperview];

[theMovie release];

}

//////////////////////////////// end

2.介绍下MPMoviePlayerViewController。

注意:MPMoviePlayerViewController 必须 presentMoviePlayerViewControllerAnimated方式添加,否则Done按钮是不会响应通知MPMoviePlayerPlaybackDidFinishNotification事件的;

- (void)createMPPlayerController:(NSString *)sFileNamePath {

MPMoviePlayerViewController *moviePlayer =[[MPMoviePlayerViewControlleralloc] initWithContentURL:[NSURLfileURLWithPath:sFileNamePath]];

[moviePlayer.moviePlayerprepareToPlay];

[selfpresentMoviePlayerViewControllerAnimated:moviePlayer]; // 这里是presentMoviePlayerViewControllerAnimated

[moviePlayer.moviePlayersetControlStyle:MPMovieControlStyleFullscreen];

[moviePlayer.view setBackgroundColor:[UIColor clearColor]];

[moviePlayer.view setFrame:self.view.bounds];

[[NSNotificationCenterdefaultCenter] addObserver:self

selector:@selector(movieFinishedCallback:)

name:MPMoviePlayerPlaybackDidFinishNotification

object:moviePlayer.moviePlayer];

[moviePlayer release];

}

-(void)movieStateChangeCallback:(NSNotification*)notify {

//点击播放器中的播放/ 暂停按钮响应的通知

}

-(void)movieFinishedCallback:(NSNotification*)notify{

// 视频播放完或者在presentMoviePlayerViewControllerAnimated下的Done按钮被点击响应的通知。

MPMoviePlayerController* theMovie = [notifyobject];

[[NSNotificationCenterdefaultCenter] removeObserver:self

name:MPMoviePlayerPlaybackDidFinishNotification

object:theMovie];

[selfdismissMoviePlayerViewControllerAnimated];

}

以下是资料

moviePlayer.moviewControlMode = MPMovieControlModeDefault;

MPMovieControlModeDefault 显示播放/暂停、音量和时间控制

MPMovieControlModeVolumeOnly 只显示音量控制

MPMovieControlModeHidden 没有控制器

moviePlayer.scallingMode = MPMovieScallingModeAspectFit;

你可以使用下列宽高比值:

MPMovieScallingModeNone 不做任何缩放

MPMovieScallingModeAspectFit 适应屏幕大小,保持宽高比

MPMovieScallingModeAspectFill 适应屏幕大小,保持宽高比,可裁剪

MPMovieScallingModeFill 充满屏幕,不保持宽高比

你会观察到以下通知:

MPMoviePlayerContentPreloadDidFinishNotification

当电影播放器结束对内容的预加载后发出。因为内容可以在仅加载了一部分的情况下播放,所以这个通知可能在已经播放后才发出。

MPMoviePlayerScallingModeDidChangedNotification

当用户改变了电影的缩放模式后发出。用户可以点触缩放图标,在全屏播放和窗口播放之间切换。

MPMoviePlayerPlaybackDidFinishNotification

当电影播放完毕或者用户按下了Done按钮后发出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: