I want a new thread because I like to post some codes , the little comment section wouldn't do it.
Thanks peter Deweese previously, but I still have issues..
I have a loop, getting a screen capture 30 times. Each time I got an image I call convert to append that image to video. After that, close the video file
so, anything I did wrong. on this particular one I am not getting the video
[self init_video]; for (index=0; index< 30; index++) {
[self.view.layer renderInContext:ctx];
global_image = UIGraphicsGetImageFromCurrentImageContext();
//Once I have UIImageview of global_image I call convert
[self convert];
} [self end_video];
////////////////////////////////////////////////////////////
-(void) init_video { ........video setup and setup adaptor
AVAssetWriterInputPixelBufferAdaptor * avAdaptor = [AVAssetWriterInputPixelBufferAdaptor assetWriterInputPixelBufferAdaptorWithAssetWriterInput:writerInput sourcePixelBufferAttributes:NULL];
[videoWriter addInput:writerInput]; [videoWriter startWriting];
[videoWriter startSessionAtSourceTime:kCMTimeZero]; }
/////////////////////////////////////////////////////
-(void) convert {..........getting the image pixel buffer
CMTime frameTime = CMTimeMake(1, 15);
CMTime lastTime=CMTimeMake(index, 15); //index is from 0 to 29 of the loop above
CMTime presentTime=CMTimeAdd(lastTime, frameTime);
//according to Peter DeWeese, needs to call twice to make it work.
[avAdaptor appendPixelBuffer:pixelBuffer withPresentationTime:lastTime];
[avAdaptor appendPixelBuffer:pixelBuffer withPresentationTime:presentTime];
}
//////////////////////////////////////////////////////////
-(void) end_video { [writerInput markAsFinished];
//want 2 seconds of video, with 15 frame for each seconds.
[videoWriter endSessionAtSourceTime:CMTimeMake(30, 15)];
[videoWriter finishWriting];
}