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

使用封装号的MPMoviePlayerViewController播放MP4视频

2011-12-12 11:28 441 查看
最近做了一个项目,简单播放MP4视频。使用网上源码进行简单封装 。 网络那一部分没有测试,读取本地视频没有问题。 以下是源码

源码:

// MyMoivePlayerView.h

#import <UIKit/UIKit.h>

#import <MediaPlayer/MediaPlayer.h>

@interface MyMoivePlayerView : UIViewController {

//sdk3.2以后

MPMoviePlayerViewController *_moviePlayViewController;

//sdk3.2以前

MPMoviePlayerController *_moviePlayerController;

}

//远程视频事件

- (void) playURLVideo;

//本地视频事件

- (void) playFileVideo;

-(void) initAndPlay:(NSString *)videoURL;

@property (nonatomic,retain) MPMoviePlayerViewController *_moviePlayViewController;

@property (nonatomic,retain) MPMoviePlayerController *_moviePlayerController;

@end

// MyMoivePlayerView.m

#import "MyMoivePlayerView.h"

@implementation MyMoivePlayerView

@synthesize _moviePlayViewController;

@synthesize _moviePlayerController;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

if (self) {

// Custom initialization

}

return self;

}

//本地视频事件

-(void) playFileVideo

{//此方法只是 3。2以后的方法

NSString*path=[[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp4"];

NSURL*url=[[NSURL alloc] initFileURLWithPath:path];

MPMoviePlayerViewController* tmpMoviePlayViewController=[[MPMoviePlayerViewController alloc]initWithContentURL:url];

if (tmpMoviePlayViewController)

{

self._moviePlayViewController=tmpMoviePlayViewController;

[self presentMoviePlayerViewControllerAnimated:_moviePlayViewController];

_moviePlayViewController.moviePlayer.movieSourceType =MPMovieSourceTypeFile;

_moviePlayViewController.view.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);

[_moviePlayViewController.moviePlayer setControlStyle:MPMovieControlStyleNone]; //不显示滚动条,播放,停止按钮

[_moviePlayViewController.moviePlayer setFullscreen:YES];

_moviePlayViewController.view.backgroundColor = [UIColor blackColor];

[_moviePlayViewController.moviePlayer play];

}

[tmpMoviePlayViewController release];

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(playbackDidFinish)name:MPMoviePlayerPlaybackDidFinishNotification object:nil];

}

//远程视频事件

- (void) playURLVideo

{

NSString*videoPath =@"http://www.subfurther.com/video/running-start-iphone.m4v";

if (videoPath == NULL)

return;

[self initAndPlay:videoPath];

}

-(void) initAndPlay:(NSString *)videoURL

{

if([videoURL rangeOfString:@"http://"].location!=NSNotFound||[videoURL rangeOfString:@"https://"].location!=NSNotFound)

{

NSURL *URL = [[NSURL alloc] initWithString:videoURL];

if (URL) {

if([[[UIDevice currentDevice] systemVersion] doubleValue] >=3.2)

{//3。2以后

MPMoviePlayerViewController* tmpMoviePlayViewController=[[MPMoviePlayerViewController alloc]initWithContentURL:URL];

if (tmpMoviePlayViewController)

{

self._moviePlayViewController=tmpMoviePlayViewController;

[self presentMoviePlayerViewControllerAnimated:_moviePlayViewController];

_moviePlayViewController.moviePlayer.movieSourceType =MPMovieSourceTypeFile;

[_moviePlayViewController.moviePlayer play];

}

[tmpMoviePlayViewController release];

}

else if([[[UIDevice currentDevice] systemVersion] doubleValue] <3.2)

{//3。2以前

MPMoviePlayerController* tmpMoviePlayController=[[MPMoviePlayerController alloc]initWithContentURL:URL];

if (tmpMoviePlayController)

{

self._moviePlayerController=tmpMoviePlayController;

[_moviePlayerController play];

}

[tmpMoviePlayController release];

}

//视频播放完成通知

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(playbackDidFinish)name:MPMoviePlayerPlaybackDidFinishNotification object:nil];

}

[URL release];

}

}

//视频播放完成后事件

- (void) playbackDidFinish

{

[[NSNotificationCenter defaultCenter]removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:nil];

if(_moviePlayViewController)

{

[self dismissMoviePlayerViewControllerAnimated];

[self._moviePlayViewController.moviePlayer stop];

_moviePlayViewController.moviePlayer.initialPlaybackTime=-1.0;

[_moviePlayViewController release];

_moviePlayViewController=nil;

}

if(_moviePlayerController)

{

[self._moviePlayerController stop];

_moviePlayerController.initialPlaybackTime= -1.0;

[_moviePlayerController release];

_moviePlayerController =nil;

}

}

@end

////////////////调用地方:

-(void) buttonAction:(id)sender {

NSLog(@"ssssssssss");

MyMoivePlayerView* playerview = [[MyMoivePlayerView alloc] initWithNibName:nil bundle:nil];

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

playerview.view.frame = self.bounds;

[self addSubview:playerview.view];

[playerview playFileVideo];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: