转:iphone之MPMoviePlayer 视频播放

iphone的视频播放官方的例子有问题。这次是费了比较长的时间。

  原因是在sdk3.2以后。视频这一块官方有很大的改动造成的。
 
远程视频:

本地视频:

首先需要引入视频包;


代码如下:

#import<UIKit/UIKit.h>

#import<MediaPlayer/MediaPlayer.h>

@interface View24 :UIViewController 

{

//sdk3.2以后

MPMoviePlayerViewController *_moviePlayViewController;

//sdk3.2以前

MPMoviePlayerController *_moviePlayerController;

 

}

//远程视频事件

-(IBAction) playURLVideo;

//本地视频事件

-(IBAction) playFileVideo;

@property (nonatomic,retain) MPMoviePlayerViewController*_moviePlayViewController;

@property (nonatomic,retain) MPMoviePlayerController*_moviePlayerController;

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

@end





//本地视频事件

-(IBAction) playFileVideo

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

NSString *path=[[NSBundle mainBundle] pathForResource:@"sophie" ofType:@"mov"];

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

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

if(tmpMoviePlayViewController)

{

self._moviePlayViewController=tmpMoviePlayViewController;

 

[selfpresentMoviePlayerViewControllerAnimated:_moviePlayViewController];

_moviePlayViewController.moviePlayer.movieSourceType = MPMovieSourceTypeFile;

[_moviePlayViewController.moviePlayer play];

}

[tmpMoviePlayViewController release];  

[[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(playbackDidFinish) name:MPMoviePlayerPlaybackDidFinishNotificationobject:nil];

 

}

 

//远程视频事件

-(IBAction) playURLVideo

{

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

if (videoPath == NULL)

return;

 

[self initAndPlay:videoPath];

 

}

-(void)initAndPlay:(NSString*)videoURL

{

   if([videoURLrangeOfString:@"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=[[MPMoviePlayerViewControlleralloc] initWithContentURL:URL];

if(tmpMoviePlayViewController)

{

self._moviePlayViewController=tmpMoviePlayViewController;

 

[selfpresentMoviePlayerViewControllerAnimated:_moviePlayViewController];

_moviePlayViewController.moviePlayer.movieSourceType = MPMovieSourceTypeFile;

[_moviePlayViewController.moviePlayer play];

}

[tmpMoviePlayViewController release];   

}

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

{//3。2以前

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

if (tmpMoviePlayController)                  

{

self._moviePlayerController=tmpMoviePlayController;

[_moviePlayerControllerplay];

}

[tmpMoviePlayController release];

}

//视频播放完成通知

[[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(playbackDidFinish) name:MPMoviePlayerPlaybackDidFinishNotificationobject:nil];

}

[URLrelease];

    }

}

//视频播放完成后事件

-(void) playbackDidFinish

{

   [[NSNotificationCenter defaultCenter] removeObserver:selfname:MPMoviePlayerPlaybackDidFinishNotificationobject:nil]; 

   if(_moviePlayViewController)

    {

       [selfdismissMoviePlayerViewControllerAnimated];

       [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;

    }

}

posted @ 2012-11-16 14:12  李伯波  阅读(242)  评论(0编辑  收藏  举报