我已经使用ffmpeg来解码我从我的ip摄像头收到的每一帧。简短的代码如下所示:
-(void) decodeFrame:(unsigned char *)frameData frameSize:(int)frameSize{
AVFrame frame;
AVPicture picture;
AVPacket pkt;
AVCodecContext *context;
pkt.data = frameData;
pat.size = frameSize;
avcodec_get_frame_defaults(&frame);
avpicture_alloc(&picture, PIX_FMT_RGB24, targetWidth, targetHeight);
avcodec_decode_video2(&context, &frame, &got_picture, &pkt);
}代码工作正常,但它是软件解码。我想通过硬件解码来提高解码性能。经过大量的研究,我知道这可能是通过AVFoundation框架实现的。AVAssetReader类可能会有所帮助,但是我不知道next.Could是什么。有人给我指出了下面的步骤吗?任何帮助都将不胜感激。
发布于 2014-10-28 02:37:02
由于硬件始终用于在iOS上解码H.264视频,因此iOS不提供对硬件解码引擎的任何公共访问。
因此,session 513为您提供了在iOS上进行逐帧解码所需的所有信息。简而言之,每个会话:
CMVideoFormatDescriptionRef作为每个会话的CMSampleBuffer513。VTDecompressionSessionRef,并使用样本缓冲器来馈送VTDecompressionSessionDecodeFrame() AVSampleBufferDisplayLayer,它的-enqueueSampleBuffer:方法消除了创建自己的decoder.的需要
发布于 2014-08-14 13:47:36
编辑:
此链接提供了有关如何逐步解码h.264的更多详细说明:
原始答案:
昨天我观看了WWDC 2014的513节“视频编码和解码的直接访问”,并得到了我自己的问题的答案。
演讲者说:
我们有视频工具箱(在iOS 8中)。视频工具箱已经在OS X上存在了一段时间了,但现在它终于在iOS.This上填充了头文件,可以直接访问编码器和解码器。
因此,在iOS 7中无法逐帧进行硬件解码,但在iOS 8中可以做到。
有没有人知道如何在iOS 8中一帧一帧地直接访问视频编解码?
https://stackoverflow.com/questions/25197169
复制相似问题