IOS 播放视频 MPMoviePlayerController

在unity游戏的开头播放视频 , 根据需求 , 最后决定用 MPMoviePlayerController 来实现播放, 实现如下: by
Tin

需要在AppController.mm的 OpenEAGL_UnityCallback  修改下view的大小


    UIView *mainView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
// mainView.backgroundColor = [UIColor grayColor];

[MyViewController Instance].view = mainView;

[UnityGetGLViewController().view addSubview: [MyViewController Instance].view];

需要在游戏中接收unity的命令


// ========================   播放开头动画  start ========================
// by:xihao
// 2014-05-16

void PlayMovieInIOS( char * path )
{
[[MyViewController Instance] PlayVideo:[NSString stringWithUTF8String:path]];

}

void exPlayVideo( char * url )
{
[[MyViewController Instance] PlayVideo:[NSString stringWithUTF8String:url]];
}

void exReleaseVideo()
{
[[MyViewController Instance] ReleaseVideo];
}

MovieViewController * mv ;

-(void) PlayVideo:(NSString *) path
{
if ( mv != nil) {
[mv breakMovie] ;
[mv release];
mv= nil ;
}

mv = [[ MovieViewController alloc] init];
[self.view addSubview:mv.view];
[mv playMovie:path];
}

-(void) ReleaseVideo
{
if ( mv != nil) {
[mv breakMovie] ;
[mv release];
mv= nil ;
}

UnitySendMessage("_IOSDoor","ReleaseVideoOver", "");
}

// ======================== 播放开头动画 end ========================

接下来是播放视频


MPMoviePlayerController *movie ;

/**
@method 播放电影
*/
-(void)playMovie:(NSString *)fileName{

NSURL *url = [NSURL fileURLWithPath: fileName ];
//视频播放对象
movie = [[MPMoviePlayerController alloc] initWithContentURL:url];
movie.controlStyle = MPMovieControlStyleNone;
[movie.view setFrame:self.view.bounds];
movie.initialPlaybackTime = -1;
[self.view addSubview:movie.view];
// 注册一个播放结束的通知
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(myMovieFinishedCallback:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:movie];

[movie play];
}

#pragma mark -------------------视频播放结束委托--------------------

-(void) breakMovie
{
if (movie == nil) {
return ;
}

//销毁播放通知
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:movie];
[movie.view removeFromSuperview];
// 释放视频对象
[movie release];
movie = nil ;
}

/*
@method 当视频播放完毕释放对象
*/
-(void)myMovieFinishedCallback:(NSNotification*)notify
{

NSNumber *reason =
[notify.userInfo
valueForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey];
if (reason != nil){
NSInteger reasonAsInteger = [reason integerValue];
switch (reasonAsInteger){
case MPMovieFinishReasonPlaybackEnded:{
/* The movie ended normally */
break; }
case MPMovieFinishReasonPlaybackError:{
/* An error happened and the movie ended */
break;
}
case MPMovieFinishReasonUserExited:{
/* The user exited the player */
break;
}
}
NSLog(@"Finish Reason = %ld", (long)reasonAsInteger);
}

/* 取消视频自动销毁 由break mv 执行
//视频播放对象
MPMoviePlayerController* theMovie = [notify object];
//销毁播放通知
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:theMovie];
[theMovie.view removeFromSuperview];
// 释放视频对象
[theMovie release];
movie = nil ;
NSLog(@"---------PlayVideoOver 11");
*/

UnitySendMessage("_IOSDoor","PlayVideoOver", "");
NSLog(@"---------PlayVideoOver 22");
}

IOS 播放视频 MPMoviePlayerController

时间: 2024-08-05 20:35:42

IOS 播放视频 MPMoviePlayerController的相关文章

ios播放视频demo

今天要用到ios原生态播放一段网络视频,在此整理共享出来 白白手游专栏http://blog.csdn.net/u010229677 首先需要给工程添加框架MediaPlayer.Framework #import "ViewController.h" #import <MediaPlayer/MediaPlayer.h> @interface ViewController () { MPMoviePlayerViewController *playerViewContro

ios开发视频播放后台下载功能实现 :1,ios播放视频 ,包含基于AVPlayer播放器,2,实现下载,iOS后台下载(多任务同时下载,单任务下载,下载进度,下载百分比,文件大小,下载状态)(真机调试功能正常)

ABBPlayerKit ios开发视频播放后台下载功能实现 : 代码下载地址:https://github.com/niexiaobo/ABBPlayerKit github资料学习和下载地址:https://github.com/niexiaobo/ 实现功能 :播放视频 ,视频后台下载 (真机调试功能正常) 1.使用ZFPlayer播放视频(可以在线和本地播放,基于AVPlayer,调节音量和屏幕亮度) 2.使用 WHCNetWorkKit 实现下载,后台下载(多任务同时下载,单任务下载,

iOS播放视频

1.首先导入 MediaPlayer import MediaPlayer 2.播放事件 class ViewController:UIViewController{ var pc:MPMoviePlayerViewController! @IBAction func playVideoBtnClicked(sender:AnyObject){ //播放资源 pc=MPMoviePlayerViewController(contentURL:NSBundle.mainBundle().URLFo

关于MPMoviePlayerController类播放视频时,外放没有声音的问题(ios)

一.导入音频资源类 #import "AVFoundation/AVAudioSession.h" 二.在播放视频的方法中加一句支持外放的代码 [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; 参考下面的例子 #pragma mark - 播放视频 - (void)playMovie:(CGRect)videoRect { // 检查网络设置 BOOL netA

【iOS开发】解决“点击MPMoviePlayerController播放视频时,出现一个黑屏闪屏问题”

当点击某按钮播放视频时,如果在按钮触发函数时alloc MPMoviePlayerController对象,同时加载资源文件,因为加载资源文件也需要时间,这时会有一个短暂的黑色闪屏,这点体验很不好,有一个好的解决方案是,提前alloc预加载好该MoviePlayer对象,点击按钮时直接调用play. 预加载相关代码: //预加载视频,避免出现黑屏 NSString *videoPath=[[NSBundle mainBundle]pathForResource:@"startVideo"

MPMoviePlayerController播放视频

基本的视频播放,应该都是用MPMoviePlayerController吧,SDK文档里给出的例子也是这样的. 一般的步骤: 1. 准备好视频路径,创建MPMoviePlayerController,即使是本地视频文件,也要生成NSURL路径. [cpp] view plaincopy NSString *file = [[NSBundle mainBundle] pathForResource:@"test_movie" ofType:@"mp4"]; NSURL

Cocos2d-x Lua 播放视频(iOS&amp;android)

最近刚转了游戏,来公司不久就接到一个任务就是做一个视频播放的功能,自己花了3天时间,暂时实现了一个简易的功能,特写篇博客,以作记录. 参考地址如下: http://blog.csdn.net/xiaominghimi/article/details/6870259 http://blog.csdn.net/kaitiren/article/details/11832851 http://blog.csdn.net/candyforever/article/details/8905852 实现功能

iOS UIWebView 全屏播放视频, 需横屏,单app不支持横屏, 解决办法

原文  http://blog.csdn.net/alincexiaohao/article/details/39294523 参考blog: UIWebView中视频播放屏幕自动旋转,app不支持旋转但是某一个页面需要旋转等 使用UIWebView播放视频时捕捉全屏播放事件 iOS两个强制旋转屏幕的方法 IOS:屏幕旋转与Transform 在使用UIWebView播放视频的时候,想到视频应该能够旋转播放.但是app本身是不支持旋转的,所以把代码记录如下,引申出来的答案就是:所有的你想要进行页

仿抖音上下滑动播放视频(兼容安卓,ios,小程序,h5)

仿抖音上下滑动播放视频(兼容安卓,ios,小程序,h5) 运行条件 HBuilder X 2.2.2 安装后,从插件市场导入,即可真机运行 vue 项目地址 github https://github.com/15157757001/scroll-video uniapp插件市场 https://ext.dcloud.net.cn/plugin?id=664 说明 插件分别用swiper实现(多端兼容)和css3动画实现(暂时只支持app),可自行切换. 插件在uni-app编译模式下编写(已切