ios – 如何执行硬件加速的H.264编码和解码流式传输?

我可以从相机获取RGBA帧数据,我想以H.264格式进行编码.我使用FFmpeg对H.264视频进行编码和解码,但是在640×480的帧大小中,我的需求太慢了.

我想使用硬件加速来加快编码和解码,那么我该怎么做呢?

此外,我需要能够通过网络流式传输编码的视频,并在另一端进行解码.如何才能做到这一点?

解决方法

如果要在iOS上进行H.264视频的硬件加速视频编码和解码,唯一的办法就是AVFoundation.不要使用第三方库进行编码或解码,因为它们目前都是cpu限制的,并且比从AVFoundation获得的慢得多.使用第三方编码器或解码器的一个原因是,如果您使用的是认情况下iOS中不支持的格式.

对于硬件加速解码,您将需要使用AVAssetReader实例(或纯播放的播放器类之一).使用AVAssetReader,我经常获得2倍或更高的播放速度来阅读H.264编码的视频,因此iOS设备使用了一些非常好的硬件加速.

同样,对于加速编码,您将使用AVAssetWriter.有一些技巧让AVAssetWriter以最佳速度进行编码(在BGRA帧中使用像素缓冲池,使用iOS 5.0纹理缓存,如果从OpenGL ES读取),我在this answer内详细描述.

如果你想看到一些代码,使用我发现加速编码和解码的最快的路径,你可以看看我的开源GPUImage框架,这与Anastasia链接的框架不同,它是完全免费使用的.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...