MPMovieplayerController添加新控件
2016-04-05 14:09
337 查看
1.计算使用MPMoviePlayerController播放的视频的长度有两种方法:
第一种方法
NSDictionary *opts = [NSDictionary dictionaryWithObject:[NSNumber
numberWithBool:NO]
forKey:AVURLAssetPreferPreciseDurationAndTimingKey];
AVURLAsset *urlAsset = [AVURLAssetURLAssetWithURL:videoUrloptions:opts];
NSInteger totalSecond = urlAsset.duration.value / urlAsset.duration.timescale;
使用上述代码需要插入AVFoundation框架。播过我用这种方法计算视频长度时,会延迟其后代码的执行,不知道什么原因。
第二种方法
使用MPMoviePlayerController的duration属性,当MPMoviePlayerController的duration未知时默认为0.0,如果duration确定,会发送MPMovieDurationAvailableNotification通知,接着duration的值将会更新为播放视频的长度,单位是秒。
2.视频什么时候开始播放
当视频开始播放时会发送MPMediaPlaybackIsPreparedToPlayDidChangeNotification,所以你只需要在注册
MPMediaPlaybackIsPreparedToPlayDidChangeNotification通知,当接收到此通知说明视频开始播放。
3.自定义播放器视图时怎么自定义声音控件
使用MPVolumeView控制系统的声音大小。通过改变MPVolumeView slider的值可以改变系统的声音,同时通过调节系统的声音按钮,slider的值也会跟着改变。
volumeView = [[MPVolumeView alloc] initWithFrame:CGRectMake(310, 180, 100, 20)];
volumeView.showsVolumeSlider = YES;
[backView addSubview:volumeView];
[volumeView release];
4.通过presentModalViewController调出MPMoviePlayer所在控制器,当通过
dismissModalViewController移除控制器时,手机的状态栏可能会消失。解决办法:在
dismissModalViewController调用函数
movieplayer.controlStyle = MPMovieControlStyleFullScreen;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delay * NSEC_PER_SEC), dispatch_get_current_queue(), ^{
[UIApplication sharedApplication].statusBarHidden = NO;
});
5.
可以对它的moviePlayer.view遍历subviews,遍历到第三级有个
MPFullscreenOverlay,这个就是当你点击播放界面时的出现的悬浮层,遍历到第四级有一个subview就是 MPTransparentControls这个类,这个就是快退/播放/快进的那个面板,你可以对这个view进行addSubview。
至于判断这个面板的显隐,可以对MPFullscreenOverlay的alpha属性用KVO进行跟踪。
MPMoviePlayerController的view上直接添加这些控件即可。
第一种方法
NSDictionary *opts = [NSDictionary dictionaryWithObject:[NSNumber
numberWithBool:NO]
forKey:AVURLAssetPreferPreciseDurationAndTimingKey];
AVURLAsset *urlAsset = [AVURLAssetURLAssetWithURL:videoUrloptions:opts];
NSInteger totalSecond = urlAsset.duration.value / urlAsset.duration.timescale;
使用上述代码需要插入AVFoundation框架。播过我用这种方法计算视频长度时,会延迟其后代码的执行,不知道什么原因。
第二种方法
使用MPMoviePlayerController的duration属性,当MPMoviePlayerController的duration未知时默认为0.0,如果duration确定,会发送MPMovieDurationAvailableNotification通知,接着duration的值将会更新为播放视频的长度,单位是秒。
2.视频什么时候开始播放
当视频开始播放时会发送MPMediaPlaybackIsPreparedToPlayDidChangeNotification,所以你只需要在注册
MPMediaPlaybackIsPreparedToPlayDidChangeNotification通知,当接收到此通知说明视频开始播放。
3.自定义播放器视图时怎么自定义声音控件
使用MPVolumeView控制系统的声音大小。通过改变MPVolumeView slider的值可以改变系统的声音,同时通过调节系统的声音按钮,slider的值也会跟着改变。
volumeView = [[MPVolumeView alloc] initWithFrame:CGRectMake(310, 180, 100, 20)];
volumeView.showsVolumeSlider = YES;
[backView addSubview:volumeView];
[volumeView release];
4.通过presentModalViewController调出MPMoviePlayer所在控制器,当通过
dismissModalViewController移除控制器时,手机的状态栏可能会消失。解决办法:在
dismissModalViewController调用函数
movieplayer.controlStyle = MPMovieControlStyleFullScreen;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delay * NSEC_PER_SEC), dispatch_get_current_queue(), ^{
[UIApplication sharedApplication].statusBarHidden = NO;
});
5.
如何向MPMovieplayerController的控制栏添加新的控件
可以对它的moviePlayer.view遍历subviews,遍历到第三级有个MPFullscreenOverlay,这个就是当你点击播放界面时的出现的悬浮层,遍历到第四级有一个subview就是 MPTransparentControls这个类,这个就是快退/播放/快进的那个面板,你可以对这个view进行addSubview。
至于判断这个面板的显隐,可以对MPFullscreenOverlay的alpha属性用KVO进行跟踪。
MPMoviePlayerController的view上直接添加这些控件即可。
相关文章推荐
- rpm 安装指令全 yum 安装 卸载命令
- 升级npm
- JBPM学习(四):运行流程实例
- 微信团队里有一枚老外产品经理,这是他观察到的中国互联网趣事
- 产品经理职责
- 使用IPMI工具实现对服务器的远程管理
- USE [EPPM] [dbo].[REFRDEL_CLEANUP]
- 《产品经理的二十堂课》—— 读后总结
- 拉勾沙龙会上,前大众点评产品经理运满满CTO分享的程序员职业规划
- 【图像处理】【SEED-VPM】7.RBL, UBL, Uboot的关系
- 国内首部基于JBPM5.4实战流程引擎开发(动态表单、模板引擎、公文管理系统)
- Chrome development tools 笔记
- rpm包的依赖关系如何通过yum解决
- 第6章招聘产品经理——寻找出色的产品经理
- 谷歌DeepMind现在可以分析万智牌和炉石卡
- Can't locate ExtUtils/Embed.pm in @INC (@INC contains: /usr/local/lib64/perl5
- 手游产品经理初探(六)粗糙的logo会给产品致命一击
- 产品经理必知
- APMserv 5.2.6 安装教程
- RK3288开发板PopMetal上的GPIO驱动实例