使用封装号的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];
}
源码:
// 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];
}
相关文章推荐
- 使用MPMoviePlayerViewController播放视频--
- Swift3 MPMoviePlayerViewController的使用,iOS播放视频
- iOS播放视频 MPMoviePlayerViewController 和 MPMoviePlayerController 使用说明
- 使用MPMoviePlayerViewController播放视频
- ios播放视频文件一般使用 MPMoviePlayerViewController 和 MPMoviePlayerController
- iOS开发 MPMoviePlayerController和MPMoviePlayerViewController(视频播放)的使用
- iPhone开发之音视频的播放——MPMoviePlayerViewController和AVAutoPlayer的使用
- 使用MPMoviePlayerViewController播放视频
- 播放视频音频文件使用 MPMoviePlayerViewController
- 播放视频音频文件使用 MPMoviePlayerViewController
- iOS用MPMoviePlayerViewController 播放MP4视频
- 如何使用MPMoviePlayerViewController播放多个视频
- MPMoviePlayerViewController播放网络视频bug
- kidd风的IOS日志之播放音乐(MPMoviePlayerViewController和MPMoviePlayerController)
- iOS 视频播放(一) MPMoviePlayerViewController、避免在后台销毁
- iOS7的程序加了多个UIWindow,调用MPMoviePlayerViewController播放视频时,除了key window其他window的坐标会被改变,怎么办
- MPMoviePlayerController刚进入ViewController就横屏满屏幕播放
- MPMoviePlayerViewControllerIOS6下实现横屏播放
- MPMovieplayerviewcontroller播放结束后自动消失的解决方案
- 利用MPMoviePlayerViewController 播放视频 iOS