我们正在使用AVAssetReader
and AVAssetWriter
有点像中提到的风格使用 AVAssetWriter 进行视频编码 - 崩溃 https://stackoverflow.com/questions/8191840/video-encoding-using-avassetwriter-crashes基本上是读取我们从照片库/资源库中获取的视频,然后以不同的比特率写入它以减小其大小(用于最终的网络上传)。
让这个为我们工作的技巧是指定一个kCVPixelBufferPixelFormatTypeKey
中的键和值outputSettings
on AVAssetReaderTrackOutput
,像这样:
NSDictionary *outputSettings = [NSDictionary
dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA]
forKey:(id)kCVPixelBufferPixelFormatTypeKey];
readerTrackOutput =
[[AVAssetReaderTrackOutput alloc] initWithTrack:src_track
outputSettings:outputSettings];
所以基本上我们使用了kCVPixelFormatType_32BGRA
的值kCVPixelBufferPixelFormatTypeKey
key.
但显然有许多可能的像素格式类型可供我们选择。运行中提到的代码技术问答 QA1501:核心视频 - 可用的像素格式 http://developer.apple.com/library/mac/#qa/qa1501/_index.html在 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
为我们工作(至少看起来),我们很好奇是否有比上面列表中更好的选择。我们应该如何选择正确的像素格式类型?
您可以尝试不同的设置并比较性能。以不同的像素格式向编码器提供缓冲器可能会导致编码性能的差异。硬件加速编码器通常使用“420v”。
也可以看看,在 iOS 上捕获视频时查询最佳像素格式? https://stackoverflow.com/questions/7186472/query-for-optimal-pixel-format-when-capturing-video-on-ios?rq=1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)