私は、インターネット接続からランダムに UIImages を取得し、画像が入ってくるとそれらからビデオ ファイルを徐々に構築する iOS アプリを開発しています。常に評価すると、ビデオが台無しになります。
新しいUIImageが到着するたびにCMTimeを再計算して、到着するUIImageのさまざまなフレームレートを調整するにはどうすればよいですか?
これが私がこれまでにやっていることです。いくつかのコードは示されていませんが、基本的なことは次のとおりです
.
.
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);
}
}