iphone ios 視訊特效,視訊合成
如果對av foundation 不熟悉得話,建議先看看wwdc 2010 關於av foundation得講座。http://blog.csdn.net/linzhiji/article/details/6752722
好的軟體
CinemaFX for Video
By Nexvio Inc.
Super 8 Qik viddy 8mm realDirector
CinemaFX
以下內容來自論壇,和自己的編輯
在做視訊特效的時候遇到了效率問題,怎麼修改都無法達到super 8 的效果,我的做法是這樣的:
使用AVAssetWriter *assetWriter;
AVAssetWriterInput *videoWriterInput;
AVAssetWriterInput *audioWriterInput;
AVAssetWriterInputPixelBufferAdaptor *pixelBufferAdaptor;
去進行視訊輸入和輸出,以及audio的合成.
2) 在得到每一個視訊frame的時候 進行圖片合成再輸出(輸出用OpenGl 方式 )
CVPixelBufferLockBaseAddress(cameraFrame, 0); int bufferHeight = CVPixelBufferGetHeight(cameraFrame); int bufferWidth = CVPixelBufferGetWidth(cameraFrame); int bytesPerRow = CVPixelBufferGetBytesPerRow(cameraFrame); sourceTime = timeS*****p; frameBaseAddress = (unsigned char *)CVPixelBufferGetBaseAddress(cameraFrame); CGContextRef context = CGBitmapContextCreate(frameBaseAddress, bufferWidth, bufferHeight, 8, bytesPerRow, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst); CGContextDrawImage(context, CGRectMake (0, 0, 480, 360), coverImage); //和圖片進行合成. CGContextRelease(context);
可以一進行合成的時候視訊顯示就會很卡,我的輸出使用的是AVCaptureSessionPresetMedium 正等大小 .
請問有沒有知道super 8的解決方案,謝謝!
主要是在這裡慢
CGContextDrawImage(context, CGRectMake (0, 0, 480, 360), coverImage); //和圖片進行合成. ,在用Opengl繪製時候是很快的。
另外 stackflow有一個問答:
http://stackoverflow.com/questions/3741323/how-do-i-export-uiimage-array-as-a-movie