iphone之MPMoviePlayer 视频播放(转)

    技术2022-05-20  50

    文章出自: http://hi.baidu.com/guorendong/blog/item/c5ebc7335c466a56ac4b5f51.html iphone之MPMoviePlayer 视频播放 2011年04月02日 星期六 上午 10:05

    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=[[MPMoviePlayerViewController alloc]initWithContentURL:url];

    if (tmpMoviePlayViewController)

    {

    self._moviePlayViewController=tmpMoviePlayViewController;

     

    [self presentMoviePlayerViewControllerAnimated:_moviePlayViewController];

    _moviePlayViewController.moviePlayer.movieSourceType =MPMovieSourceTypeFile;

    [_moviePlayViewController.moviePlayerplay];

    }

    [tmpMoviePlayViewController release];

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

     

    }

     

     

     

     

    //远程视频事件

    - (IBAction) playURLVideo

    {

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

    if (videoPath == NULL)

    return;

     

    [selfinitAndPlay:videoPath];

     

    }

     

    -(void) initAndPlay:(NSString *)videoURL

    {

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

    {

    NSURL *URL = [[NSURLalloc] 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.moviePlayerplay];

    }

    [tmpMoviePlayViewController release];

    }

    elseif([[[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:selfselector:@selector(playbackDidFinish)name:MPMoviePlayerPlaybackDidFinishNotification object:nil];

    }

    [URL release];

    }

    }

     

    //视频播放完成后事件

    - (void) playbackDidFinish

    {

    [[NSNotificationCenter defaultCenter]removeObserver:selfname:MPMoviePlayerPlaybackDidFinishNotification object:nil];

    if(_moviePlayViewController)

    {

    [self dismissMoviePlayerViewControllerAnimated];

    [self._moviePlayViewController.moviePlayerstop];

    _moviePlayViewController.moviePlayer.initialPlaybackTime=-1.0;

    [_moviePlayViewController release];

    _moviePlayViewController=nil;

    }

    if(_moviePlayerController)

    {

    [self._moviePlayerController stop];

    _moviePlayerController.initialPlaybackTime= -1.0;

    [_moviePlayerController release];

    _moviePlayerController =nil;

    }

    }


    最新回复(0)