MPMoviePlayerController
来源:互联网 发布:医生都善良知乎 编辑:程序博客网 时间:2024/05/20 00:13
mp4.mvo.m4v.m2v.3gp.3g2
视频播放使用
#import "ViewController.h"#import <MediaPlayer/MediaPlayer.h>//如果想使用AVAssetImageGenerator 获得截图 必须导入AVFoundation#import <AVFoundation/AVFoundation.h>//AVAsset 通过URL 获取视频的资源//AVAssetImageGenerator可以得到 视频里面的图片
初始化一个全局变量
@interface ViewController (){ MPMoviePlayerController *moviewPlayer;}@end@implementation ViewController
// moviePlayer可以通过 通知来 检测到 视频播放的状态// MPMoviePlayerPlaybackStateDidChangeNotification// [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(changeState:) name:MPMoviePlayerPlaybackStateDidChangeNotification object:nil]; /** * 播放视频的类 * * MPMoviePlayerController */ NSString *path = [[NSBundle mainBundle]pathForResource:@"学前须知" ofType:@"mp4"]; moviewPlayer = [[MPMoviePlayerController alloc]initWithContentURL:[NSURL fileURLWithPath:path]]; UIImage *image = [self thumbnailImage:path]; self.view.backgroundColor = [UIColor colorWithPatternImage:image];//// 还需要设置 moviePlayer。View 的fram// // moviewPlayer.view.frame =self.view.frame;// moviewPlayer.view.backgroundColor = [UIColor redColor];// // //// 显示视频显示的控制的样式// moviewPlayer.controlStyle = MPMovieControlStyleEmbedded;// //// 设置视频 是否循环播放//// MPMovieRepeatModeNone 不循环//// MPMovieRepeatModeOne 循环// moviewPlayer.repeatMode = MPMovieRepeatModeNone;// // /**// * 需要把 视频播放器的View 添加在 需要播放的视图// *// * @return// */// // [self.view addSubview:moviewPlayer.view];// // // NSLog(@"视频播放的当前时间%f",moviewPlayer.currentPlaybackTime);// // // 是否允许分享到airPlay// moviewPlayer.allowsAirPlay =YES;// // // 是否使用了AirPlay// NSLog(@"是否使用了AirPlay :%d",moviewPlayer.airPlayVideoActive);// // // 如果播放的是网络视频 是否需要 自动继续播放// moviewPlayer.shouldAutoplay =YES;// // // 设置视频全屏// // 1// // moviewPlayer.fullscreen =YES;// //// 2// // [moviewPlayer setFullscreen:YES animated:YES];// //// 播放// // [moviewPlayer play];// // NSLog(@"是否全屏 %d",moviewPlayer.isFullscreen);// // 获取视频当前加载状态// 未知状态// MPMovieLoadStateUnknown = 0,// 可以播放的状态// MPMovieLoadStatePlayable = 1 << 0,// 如果使用了 shouAutoplay is YES 有可以自动播放的 自动播放// MPMovieLoadStatePlaythroughOK// 没有网络数据可以播放的时候// MPMovieLoadStateStalled = 1 << 2,// 获取视频播放的当前状态// moviewPlayer.loadState}-(void)changeState:(NSNotification *)not{ NSLog(@"%@",not.object);// 可以获得 整个视频播放的对象 MPMoviePlayerController *mp = not.object;// playbackState 只读的属性 可以通过它来获取 视频播放的状态// MPMoviePlaybackStateStopped,停止// MPMoviePlaybackStatePlaying,播放// MPMoviePlaybackStatePaused,暂停// MPMoviePlaybackStateInterrupted,中断// MPMoviePlaybackStateSeekingForward,快进// MPMoviePlaybackStateSeekingBackward 快退 NSLog(@"%ld",(long)mp.playbackState); switch (mp.playbackState) { case MPMoviePlaybackStateStopped: NSLog(@"停止"); break; case MPMoviePlaybackStatePlaying: NSLog(@"开始"); break; case MPMoviePlaybackStatePaused: NSLog(@"暂停"); break; case MPMoviePlaybackStateInterrupted: NSLog(@"中断"); break; case MPMoviePlaybackStateSeekingForward: NSLog(@"快进"); break; case MPMoviePlaybackStateSeekingBackward: NSLog(@"快退"); break; default: break; }//通过moviePlayerController 获得截图的方法 // MPMovieTimeOptionNearestKeyFrame获得相对时间的截图// MPMovieTimeOptionExact获得绝对时间的截图 [moviewPlayer requestThumbnailImagesAtTimes:@[@(1),@(5)] timeOption:MPMovieTimeOptionNearestKeyFrame];// 检测截图成功的通知的名字// MPMoviePlayerThumbnailImageRequestDidFinishNotification// 可以获得 通知传过来 内容的 图片的key// MPMoviePlayerThumbnailImageKey}//转码//FFMGEG VFL 转码的开源框架/** * 截图 * * */-(UIImage *)thumbnailImage:(NSString *)path{// 1、通过 URL获得视频的资源// AVAsset// AVURLAsset AVAsset *asset = [AVAsset assetWithURL:[NSURL fileURLWithPath:path]];//// 这两个是一样的// AVURLAsset *asset = [AVURLAsset assetWithURL:[NSURL fileURLWithPath:path]];// 2、初始化 视频资源图片的持有者 AVAssetImageGenerator *generator =[[AVAssetImageGenerator alloc]initWithAsset:asset];// 3、开始截图// CMTime 包含了时间的值 和帧数// copyCGImageAtTime 拷贝哪个时间段的图片(包括哪一帧) CGImageRef ref = [generator copyCGImageAtTime:CMTimeMake(1, 2) actualTime:nil error:nil];// UIImage *image = [UIImage imageWithCGImage:ref]; return image;}
0 0
- MPMoviePlayerController
- MPMoviePlayerController
- MPMoviePlayerController
- MPMoviePlayerController
- MPMoviePlayerController
- MPMoviePlayerController
- MPMoviePlayerController
- MPMoviePlayerController
- MPMoviePlayerController
- MPMoviePlayerController
- MPMoviePlayerController
- 自定义MPMoviePlayerController
- Mpmovieplayercontroller 黑屏
- MPMoviePlayerController ---itemFailedToPlayToEnd
- MPMoviePlayerController结构
- MPMoviePlayerController 使用
- 自定义MPMoviePlayerController
- 视频 MPMoviePlayerController
- 双向链表的学习
- VEX Types(数据类型)
- 项目3 - 体验复杂度-汉诺塔
- assets和res/raw的区别
- 一个Spring事件监听例子
- MPMoviePlayerController
- ffmpeg 新老接口问题及对照集锦
- Edit Distance
- (转)Http学习之使用HttpURLConnection发送post和get请求
- 关于理想
- Java 内部类总
- Ember.js 入门指南——handlebars条件表达式
- Oracle中varchar,varchar2,nvarchar,nvarchar2的区别
- Java并发编程:线程池的使用