7

我们正在使用AVAssetReaderAVAssetWriter在某种程度上采用视频编码中所述的风格,使用 AVAssetWriter - CRASHES基本上是为了读取我们从照片库/资产库中获得的视频,然后以不同的比特率写入以减小其大小(用于最终的网络上传) .

让它为我们工作的诀窍是在on中指定一个kCVPixelBufferPixelFormatTypeKey键和值,如下所示:outputSettingsAVAssetReaderTrackOutput

NSDictionary *outputSettings = [NSDictionary 
    dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA] 
                  forKey:(id)kCVPixelBufferPixelFormatTypeKey];     
readerTrackOutput = 
    [[AVAssetReaderTrackOutput alloc] initWithTrack:src_track 
                                     outputSettings:outputSettings];

所以基本上我们使用kCVPixelFormatType_32BGRA了键的值kCVPixelBufferPixelFormatTypeKey

但显然我们可以选择许多可能的像素格式类型。运行技术问答 QA1501:核心视频 - iOS 6.0.1 iPhone 设备上可用的像素格式中记录的代码,下面是它显示的支持像素格式类型的列表:

Core Video Supported Pixel Format Types:
Core Video Pixel Format Type: 32
Core Video Pixel Format Type: 24
Core Video Pixel Format Type: 16
Core Video Pixel Format Type (FourCC): L565
Core Video Pixel Format Type (FourCC): 2vuy
Core Video Pixel Format Type (FourCC): yuvs
Core Video Pixel Format Type (FourCC): yuvf
Core Video Pixel Format Type: 40
Core Video Pixel Format Type (FourCC): L008
Core Video Pixel Format Type (FourCC): 2C08
Core Video Pixel Format Type (FourCC): r408
Core Video Pixel Format Type (FourCC): v408
Core Video Pixel Format Type (FourCC): y408
Core Video Pixel Format Type (FourCC): y416
Core Video Pixel Format Type (FourCC): BGRA
Core Video Pixel Format Type (FourCC): b64a
Core Video Pixel Format Type (FourCC): b48r
Core Video Pixel Format Type (FourCC): b32a
Core Video Pixel Format Type (FourCC): b16g
Core Video Pixel Format Type (FourCC): R10k
Core Video Pixel Format Type (FourCC): v308
Core Video Pixel Format Type (FourCC): v216
Core Video Pixel Format Type (FourCC): v210
Core Video Pixel Format Type (FourCC): v410
Core Video Pixel Format Type (FourCC): r4fl
Core Video Pixel Format Type (FourCC): grb4
Core Video Pixel Format Type (FourCC): rgg4
Core Video Pixel Format Type (FourCC): bgg4
Core Video Pixel Format Type (FourCC): gbr4
Core Video Pixel Format Type (FourCC): 420v
Core Video Pixel Format Type (FourCC): 420f
Core Video Pixel Format Type (FourCC): 411v
Core Video Pixel Format Type (FourCC): 411f
Core Video Pixel Format Type (FourCC): 422v
Core Video Pixel Format Type (FourCC): 422f
Core Video Pixel Format Type (FourCC): 444v
Core Video Pixel Format Type (FourCC): 444f
Core Video Pixel Format Type (FourCC): y420
Core Video Pixel Format Type (FourCC): f420
Core Video Pixel Format Type (FourCC): a2vy
Core Video Pixel Format Type (FourCC): L00h
Core Video Pixel Format Type (FourCC): L00f
Core Video Pixel Format Type (FourCC): 2C0h
Core Video Pixel Format Type (FourCC): 2C0f
Core Video Pixel Format Type (FourCC): RGhA
Core Video Pixel Format Type (FourCC): RGfA

尽管kCVPixelFormatType_32BGRA对我们有用(至少表面上),但我们很好奇是否有比上述列表更好的选择。我们应该如何选择适合我们的像素格式类型?

4

1 回答 1

1

您可以尝试不同的设置并比较性能。以不同的像素格式向编码器提供缓冲区可能会导致编码性能的差异。硬件加速编码器通常使用“420v”。

另请参阅,在 iOS 上捕获视频时查询最佳像素格式?

于 2013-08-19T13:07:13.963 回答