AVPlayer 截取视频流的当前帧

*在给应用截图是发现系统截图方法不能截取播放器的画面,所以需要手动截取视频当前帧的画面。

本文说明的是AVPlayer的视频流截图方法。

截取视频画面总共分三步

一、声明所需属性

@interface ViewController ()
{
    AVPlayer *_player;
    AVPlayerItemVideoOutput *_videoOutPut;
    
}
@end

二、实例化

    //初始化输出流
    _videoOutPut = [[AVPlayerItemVideoOutput alloc] init];
    //初始化播放地址
    AVPlayerItem *item = [AVPlayerItem playerItemWithURL:[NSURL URLWithString:@"视频地址"]];
    //添加输出流
    [item addOutput:_videoOutPut];
    //初始化播放器
    _player = [[AVPlayer alloc] initWithPlayerItem:item];
    //展示播放器到视图上。。。。


三、获取关键帧画面

-(void)getCurrentImage
{
    CMTime itemTime = _player.currentItem.currentTime;
    CVPixelBufferRef pixelBuffer = [_videoOutPut copyPixelBufferForItemTime:itemTime itemTimeForDisplay:nil];
    CIImage *ciImage = [CIImage imageWithCVPixelBuffer:pixelBuffer];
    CIContext *temporaryContext = [CIContext contextWithOptions:nil];
    CGImageRef videoImage = [temporaryContext
                             createCGImage:ciImage
                             fromRect:CGRectMake(0, 0,
                                                 CVPixelBufferGetWidth(pixelBuffer),
                                                 CVPixelBufferGetHeight(pixelBuffer))];
    
    //当前帧的画面
    UIImage *currentImage = [UIImage imageWithCGImage:videoImage];
    CGImageRelease(videoImage);
}

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
鸿蒙AVPlayer是一款功能强大的音视频播放器,它可以用于播放各种格式的音频和视频文件,包括字节流视频。要在鸿蒙AVPlayer中播放字节流视频,可以按照以下步骤进行: 1. 获取字节流视频数据:首先需要从某个来源获取字节流视频数据,可以是网络请求、本地文件读取或其他方式获取。 2. 创建AVPlayer对象:使用AVPlayer类创建一个AVPlayer对象,用于管理视频的播放控制和状态。 3. 创建AVDataSource:根据获取到的字节流视频数据,创建AVDataSource对象,用于提供数据源给AVPlayer使用。可以使用AVMemoryDataSource或AVStreamDataSource来创建。 4. 设置AVPlayer的数据源:将创建的AVDataSource对象设置给AVPlayer,用于播放器解析和播放字节流视频数据。 5. 设置AVPlayer的Surface:在鸿蒙系统中,AVPlayer需要一个Surface控件来展示视频画面。可以通过创建一个SurfaceView或SurfaceBridge对象,并将其与AVPlayer关联起来。 6. 开始播放:调用AVPlayer的start方法,开始播放字节流视频。 7. 监听播放器状态:可以监听播放器的状态变化,如播放结束、错误等,以便及时处理相应的操作或提示用户。 8. 播放控制:可根据需要添加一些播放控制功能,如暂停、继续播放、快进、快退等。 总结:通过以上步骤,可以在鸿蒙AVPlayer中成功播放字节流视频。需要获取字节流视频数据,创建AVDataSource对象并设置给AVPlayer,设置Surface用于展示画面,然后调用start方法开始播放即可。同时,还可以根据需求监听和控制播放器的状态和行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值