gpt4 book ai didi

ios - AVAssetWriter:指定关键帧

转载 作者:行者123 更新时间:2023-12-01 16:41:28 26 4
gpt4 key购买 nike

我在iOS上使用AVAssetWriter编码MP4视频。我目前正在使用AVAssetWriterInputPixelBufferAdaptor传递数据,但是在这方面我很灵活。

如何指定哪些输入框是关键框?

目前,我可以通过设置AVVideoMaxKeyFrameIntervalKey来控制关键帧的数量(或使所有帧成为关键帧),但是我的编码视频是带有过渡的直接幻灯片演示,并且我想确保主图像上的关键帧不牺牲压缩。

最佳答案

如果您制作CMSampleBufferRef s(通过CMSampleBufferCreateReadyWithImageBuffer(…)直接传递到AVAssetWriterInput(而不是通过AVAssetWriterInputPixelBufferAdaptor)),则可以使用CMSetAttachment(…)在框架上将kCMSampleBufferAttachmentKey_ForceKeyFrame设置为kCFBooleanTrue,以确保它将成为关键帧。

远离AVAssetWriterInputPixelBufferAdaptor的潜在弊端是您失去了共享像素缓冲池所带来的存储效率。

如果内存效率很重要,则可能需要考虑研究VideoToolboxVTCompressionSessionVTCompressionSessionAVAssetWriter*更复杂,但是它也公开了内部使用的像素缓冲池。

如果您确实遵循这条路线,则在将帧提交给kVTEncodeFrameOptionKey_ForceKeyFrame进行压缩时,将需要使用设置为kCFBooleanTrueVTCompressionSessionEncodeFrame(…)键作为帧属性。

关于ios - AVAssetWriter:指定关键帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23936608/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com