2013-03-09 4 views
0

Я разрабатываю приложение iOS, которое получает случайные моменты из ULmages в интернет-соединении и постепенно создает из них видеофайл, когда появляются изображения. , но тот факт, что изображения не поступают с одинаковой скоростью, все время врезается в видео.IOS Запись видео с использованием UIIмагов, прибывающих в случайные моменты

Как перерасчитать CMTime, когда каждый новый UIImage поступает так, чтобы он настраивался для изменяющейся частоты кадров прибывающих UIImages, которые могут прибыть где угодно от миллисекунд до нескольких секунд?

Вот что я делал до сих пор, какой-то код не отображается, но вот основная вещь

. 
. 
adaptor = [AVAssetWriterInputPixelBufferAdaptor 
      assetWriterInputPixelBufferAdaptorWithAssetWriterInput: videoStream 
      sourcePixelBufferAttributes:attributes]; 

CMTime frameTime=CMTimeMake(1,10); // assumed initial frame rate 
. 
. 


-(void)addImageToMovie:(UIImage*)img { 
    append_ok=FALSE; 
    buffer = [self pixelBufferFromCGImage:[img CGImage] andSize:img.size]; 
    while (!append_ok) { 
     if (adaptor.assetWriterInput.readyForMoreMediaData){ 
      frameTime.value +=1; 
      append_ok = [adaptor appendPixelBuffer:buffer withPresentationTime:frameTime]; 
      [NSThread sleepForTimeInterval:0.01]; 
     } else { 
      [NSThread sleepForTimeInterval:0.01]; 
     } 
    } 
    if(buffer) { 
     CVBufferRelease(buffer); 
    } 
    } 

ответ

0

Это зависит от количества кадров. Вместо добавления 1 добавьте 10 к frameTime.value.

Смежные вопросы