AVPlayer 截取视频流的当前帧
2016-12-29 17:56
447 查看
*在给应用截图是发现系统截图方法不能截取播放器的画面,所以需要手动截取视频当前帧的画面。
本文说明的是AVPlayer的视频流截图方法。
截取视频画面总共分三步
{
AVPlayer *_player;
AVPlayerItemVideoOutput *_videoOutPut;
}
@end
_videoOutPut = [[AVPlayerItemVideoOutput alloc] init];
//初始化播放地址
AVPlayerItem *item = [AVPlayerItem playerItemWithURL:[NSURL URLWithString:@"视频地址"]];
//添加输出流
[item addOutput:_videoOutPut];
//初始化播放器
_player = [[AVPlayer alloc] initWithPlayerItem:item];
//展示播放器到视图上。。。。
{
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);
}
本文说明的是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);
}
相关文章推荐
- 截取视频当前画面做封面图
- 当前日期时间的获取和字符串的截取拼接前、替换 。。。
- 【Linux】Linux下MIPS平台交叉编译FFmpeg库 及使用库截取视频中的某一帧
- FFmpeg截取视频
- AVPlayer自定义视频
- 截取视频文件第一桢的图片和转换视频格式文件为flv(支持文件格式:asf,avi,mpg,flv,3gp,mov,wmv)
- android下截取当前屏幕程序中遇到的错误总结
- iOS 截取视频缩略图
- H5 Video截取第一帧 Canvas 动态视频渲染、截取
- ASP.NET截取上传视频,swf文件第一帧作为预览图片
- C#字符串截取、获取当前电脑时间、判断输入日期对错 随手记
- 郭克华手机编程教学视频----我的练习源码(5)命令按钮监听2:使用当前类实现
- C#之从当前的字符串中移除头部和尾部的空白字符和截取字符(字符串的位数)
- 视频截取代码
- Windows Phone 7 截取当前屏幕保存图像的代码 推荐
- Windows Phone 7 截取当前屏幕保存图像的代码
- 视频播放AVPlayerViewController
- JMF实现从摄像头和麦克截取视频和音频流进行播放
- 视频文件截取图片,asp.net c#
- ffmpeg 截取视频中任意一帧或多帧图片