백그라운드 스레드에서 AVAssetWriterInput의 readyForMoreMediaData가 업데이트 되었습니까? readyForMoreMediaData가 NO이면 기본 스레드에서 차단하고 값이 YES로 변경 될 때까지 기다릴 수 있습니까?AVAssetWriterInput 및 readyForMoreMediaData
나는 (requestMediaDataWhenReadyOnQueue를 사용하지 않고 IE)이 데이터를 밀어하여 AVAssetWriterInput을 사용하고 있는데 나는 expectsMediaDataInRealTime을 설정 한, 시간의 99.9 %가 난 그냥 내 응용 한 빨리 그것을 appendSampleBuffer (또는 appendPixelBuffer)를 호출 할 수 있습니다 프레임을 생성 할 수 있습니다.
AVAssetWriter 세션 도중 15 분 정도 기기를 잠자기 상태로 설정하지 않으면 정상적으로 작동합니다. 장치를 깨우면 appendPixelBuffer에 "readyForMoreMediaData가 NO 인 경우 픽셀 버퍼를 추가 할 수 없습니다."라는 오류가 표시되는 경우가 있습니다.
while (![assetWriterInput readyForMoreMediaData])
{
Sleep for a few milliseconds
}
안녕 @MoDJ - 내가 뭔가를 누락 될 수 있습니다,하지만 당신은 두 가지 접근 방식에서에 "절전"0.1 초를하려는 것 같습니다 -하지만 두 번째, 당신은하지 않습니다 자고. 코드가 그것을 의미하는 것은 아니며 로그에서도 볼 수 있습니다. –
실행 루프에서 runUntilDate를 호출하는 것은 sleep과 동일하지 않습니다. 실행 루프는 비동기 IO가 준비 상태가되거나 NSNotification 전달과 같은 다른 작업을 수행 할 수 있습니다. 요점은 readyForMoreMediaData 플래그가 실행 루프 작업 중 하나에 의해 설정 될 수 있다는 것입니다. 이는 iPad2에서 진행되고있는 것으로 보입니다. – MoDJ
그래서 runUntilDate는 "자기 포함 안함"입니까? 그게 내가 놓친 것 같아 –