iOS编程——AVPlayer解决闪屏问题
来源:互联网 发布:ghost远控源码 编辑:程序博客网 时间:2024/05/22 06:07
问题终于解决,选用AVPlayer,重置一下AVPlayerItem就不会出现闪屏现象,注册一个通知同样可以实现循环播放,而且AVPlayer可以自定义播放样式,给了我们更大的发挥空间,完全可以自己DIY播放器样式。并且AVPlayer完全可以实现两个视频窗口播放!
1.需要引入两个类库:
在.h中引入
#import <AVFoundation/AVFoundation.h>
在.m中引入
#import <CoreMedia/CoreMedia.h>
代码如下:
- (void)viewDidLoad{ [super viewDidLoad]; UIButton * rightBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; rightBtn.frame = CGRectMake(50, 420, 180, 50); [rightBtn addTarget:self action:@selector(doRight) forControlEvents:UIControlEventTouchUpInside]; [rightBtn setTitle:@"同时播放" forState:UIControlStateNormal]; [self.view addSubview:rightBtn]; NSString *filePath = [[NSBundle mainBundle] pathForResource:@"找朋友" ofType:@"mp4"]; NSURL *sourceMovieURL = [NSURL fileURLWithPath:filePath]; AVAsset *movieAsset = [AVURLAsset URLAssetWithURL:sourceMovieURL options:nil]; AVPlayerItem * playerItem = [AVPlayerItem playerItemWithAsset:movieAsset]; self.player_0 = [AVPlayer playerWithPlayerItem:playerItem]; AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:_player_0]; playerLayer.frame = CGRectMake(0, 0, 400, 500); playerLayer.videoGravity = AVLayerVideoGravityResizeAspect; [self.view.layer addSublayer:playerLayer]; [_player_0 play]; //注册通知 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(runLoopTheMovie:) name:AVPlayerItemDidPlayToEndTimeNotification object:nil]; }- (void)doRight{ NSString *filePath = [[NSBundle mainBundle] pathForResource:@"字母歌" ofType:@"mp4"]; NSURL *sourceMovieURL = [NSURL fileURLWithPath:filePath]; AVAsset *movieAsset = [AVURLAsset URLAssetWithURL:sourceMovieURL options:nil]; AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:movieAsset]; self.player_1 = [AVPlayer playerWithPlayerItem:playerItem]; AVPlayerLayer * playerLayer = [AVPlayerLayer playerLayerWithPlayer:_player_1]; playerLayer.frame = CGRectMake(420, 0, 400, 500); playerLayer.videoGravity = AVLayerVideoGravityResizeAspect; [self.view.layer addSublayer:playerLayer]; [_player_1 play]; }- (void)runLoopTheMovie:(NSNotification *)n{ //注册的通知 可以自动把 AVPlayerItem 对象传过来,只要接收一下就OK AVPlayerItem * p = [n object]; //关键代码 [p seekToTime:kCMTimeZero]; [_player_0 play]; NSLog(@"重播");}
Demo链接:http://download.csdn.net/detail/u012405234/6614853
运行环境:Xcode 4.6.3 ARC
- iOS编程——AVPlayer解决闪屏问题
- iOS 多媒体编程(二)——视频(AVPlayer)
- iOS 视屏播放软件(AVPlayer)
- iOS编程——MPMoviePlayerController之切换闪屏问题
- iOS AvPlayer AvAudioPlayer音频的后台播放问题
- iOS AvPlayer AvAudioPlayer音频的后台播放问题
- iOS AvPlayer AvAudioPlayer音频的后台播放问题
- iOS AvPlayer AvAudioPlayer音频的后台播放问题
- iOS AvPlayer AvAudioPlayer音频的后台播放问题
- iOS AvPlayer AvAudioPlayer音频的后台播放问题
- iOS AvPlayer AvAudioPlayer音频的后台播放问题
- iOS AvPlayer AvAudioPlayer音频的后台播放问题
- iOS AvPlayer AvAudioPlayer音频的后台播放问题
- iOS AvPlayer AvAudioPlayer音频的后台播放问题
- iOS AVplayer 基本使用方法
- iOS AVPlayer 使用详解
- iOS AVPlayer音频开发
- ffmpeg-avplayer-for-ios
- 创建最大内存的转储文件
- HDU1272并查集
- Nginx
- LinuxAPP学习笔记---持续更新
- JAVA是解释型语言还是编译型语言
- iOS编程——AVPlayer解决闪屏问题
- 第十四周 加倍后倒叙输出
- android onActivityResult data 取不到值 返回Null
- android中的线程与消息处理
- USB驱动之几个重要结构体分析
- Ubuntu 11.04 下安装配置 JDK 7
- 转载请注明出处: http://www.blogjava.net/zh-weir/archive/2013/08/14/402821.html
- 百度如何识别原创
- 士兵杀敌(四)