AVAssetWriterInput 的 readyForMoreMediaData 是否在后台线程中更新?如果 readyForMoreMediaData 为 NO,我可以在主线程中阻塞并等待值变为 YES 吗?
我通过向 AVAssetWriterInput 推送数据(即不使用 requestMediaDataWhenReadyOnQueue)来使用 AVAssetWriterInput,并且我已经设置了 expectsMediaDataInRealTime,并且 99.9% 的时间我可以在其上调用 appendSampleBuffer(或 appendPixelBuffer),其速度与我的应用程序生成帧的速度一样快。
除非您在 AVAssetWriter 会话中间让设备 (iPhone 3GS) 休眠 15 分钟左右,否则这工作正常。唤醒设备后,appendPixelBuffer 有时会收到错误消息:“当 readyForMoreMediaData 为 NO 时,无法附加像素缓冲区”。因此我的问题 - 如何最好地响应 readyForMoreMediaData=NO 以及我是否可以像这样在主线程中稍等片刻:
while ( ![assetWriterInput readyForMoreMediaData] )
{
Sleep for a few milliseconds
}