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
原创粉丝点击