Capture Thumbnails from Video Files (捕获视频中的屏幕截图)

本文介绍如何使用MPMoviePlayerController在iOS应用中从正在播放的视频异步获取特定时间点的屏幕截图,并展示了如何设置和控制播放器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1。使用MPMoviePlayerController在当前播放的视频中异步获取屏幕截图

e.g.

@property(nonatomic,strong)UIImage *captureImg; //保留抓捕的图像

//播放视频

- (void) startPlayingVideo:(id)paramSender{

    NSBundle *mainBundle = [NSBundle mainBundle]; 

    NSURL *url = [mainBundle URLForResource:@"Sample" withExtension:@"m4v"];

    if (self.moviePlayer != nil){

        [self stopPlayingVideo:nil];

    }   

    [[AVAudioSession sharedInstance]setCategory:AVAudioSessionCategoryPlayback error:Nil];

    self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];

    

    if (self.moviePlayer != nil){

        [[NSNotificationCenter defaultCenter]  addObserver:self  selector:@selector(videoHasFinishedPlaying:)

                      name:MPMoviePlayerPlaybackDidFinishNotification  object:self.moviePlayer];

        

        //监听:抓捕帧图的操作结束时

        [[NSNotificationCenter defaultCenter]  addObserver:self selector:@selector(videoThumbnailIsAvailable:)

                      name:MPMoviePlayerThumbnailImageRequestDidFinishNotification object:self.moviePlayer];     

        

        NSLog(@"Successfully instantiated the movie player.");

        self.moviePlayer.scalingMode = MPMovieScalingModeAspectFit;

        [self.moviePlayer play];      

        [self.view addSubview:self.moviePlayer.view];      

        [self.moviePlayer setFullscreen:YES  animated:YES];

        

        // -----------------------------

        /* 抓捕第3帧 */

        NSNumber *thirdSecondThumbnail = @3.0f;

        [self.moviePlayer  requestThumbnailImagesAtTimes:@[thirdSecondThumbnail] timeOption:MPMovieTimeOptionExact];      

    } else {

        NSLog(@"Failed to instantiate the movie player.");

    } 

}

//将成功抓捕到的图保留,或直接进行处理

- (void) videoThumbnailIsAvailable:(NSNotification *)paramNotification{  

    MPMoviePlayerController *controller = [paramNotification object];

    if ([controller isEqual:self.moviePlayer]){

        NSLog(@"Thumbnail is available");

        UIImage *thumbnail =  [paramNotification.userInfo objectForKey:MPMoviePlayerThumbnailImageKey];       

        if (thumbnail != nil){

            self.captureImg = thumbnail;

        }

    }   

}

//停止播放,取消监听

- (void) stopPlayingVideo:(id)paramSender {

    

    if (self.moviePlayer != nil){

        [[NSNotificationCenter defaultCenter] removeObserver:self

         name:MPMoviePlayerPlaybackDidFinishNotification  object:self.moviePlayer];

        

        [[NSNotificationCenter defaultCenter] removeObserver:self

         name:MPMoviePlayerThumbnailImageRequestDidFinishNotification  object:self.moviePlayer];

        

        [self.moviePlayer stop];       

        [self.moviePlayer.view removeFromSuperview];

        

        //将抓捕到的图像进行处理

        UIImageView *imgView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 310, self.view.frame.size.height - 100)];

       imgView.image = self.captureImg;

        。。。。。。。。        

    }  

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值