2010-10-26 9 views
7

AVAssetWriter sürecinin ilerlemesini nasıl hesaplayabilirim? Ben kaç y x tamamladık anlamaya döngü sırasında çekerek (veya sorgulama) nelerinAVAssetWriter'in yazımının ilerlemesini nasıl izleyebilirim?

[assetWriterInput requestMediaDataWhenReadyOnQueue:queue usingBlock:^{ 
    while (1){ 
    if ([assetWriterInput isReadyForMoreMediaData]) { 
     CMSampleBufferRef sampleBuffer = [audioMixOutput copyNextSampleBuffer]; 
     if (sampleBuffer) { 
     [assetWriterInput appendSampleBuffer:sampleBuffer]; 
     CFRelease(sampleBuffer); 
     } else { 
     [assetWriterInput markAsFinished]; 
     break; 
     } 
    } 
    } 
}]; 

: Ben böyle bir şey var Yani eğer?

Teşekkürler.

cevap

16

Örnek arabelleğin üzerinde birkaç zaman damgası vardır. Sen çağrısı ile sunum zaman damgasını alabilir:

CMTime presTime = CMSampleBufferGetPresentationTimeStamp(sampleBuffer); 

Daha sonra giriş tamponu için kaynağına ne kadar uzakta belirlemek için kullanabilirsin. presTime/süresi, yaklaşık ilerlemeyi temsil eden 0,0 ila 1,0 değerini vermelidir. Daha kesin olmanız gerekiyorsa, CMSampleBufferGetDuration() yöntemini kullanarak örnek arabelleğinde örneklerin süresini katmayı deneyebilirsiniz.

Sunum zamanı çalışmazsa, başlıkta bulunan diğer damgalara bakın.