MPMoviePlayerController

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
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ldl_csdn_ios

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值