いくつかのコードを投稿するのが好きなので、新しいスレッドが必要です。小さなコメントセクションではできません。
以前はピーター・デウィーズに感謝しましたが、まだ問題があります..
スクリーンキャプチャを30回取得するループがあります。画像を取得するたびに convert を呼び出して、その画像をビデオに追加します。その後、ビデオファイルを閉じます
だから、私が間違ったことは何でも。この特定のもので、私はビデオを取得していません
[セルフ 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];
} [自己 end_video];
/////////////////////////////////////////////// //////////
-(void) init_video { ........ビデオのセットアップとセットアップ アダプター
AVAssetWriterInputPixelBufferAdaptor * avAdaptor = [AVAssetWriterInputPixelBufferAdaptor assetWriterInputPixelBufferAdaptorWithAssetWriterInput:writerInput sourcePixelBufferAttributes:NULL];
[videoWriter addInput:writerInput]; [videoWriter startWriting];
[videoWriter startSessionAtSourceTime:kCMTimeZero]; }
/////////////////////////////////////////////// ///
-(void) convert {..........画像ピクセル バッファの取得
CMTime frameTime = CMTimeMake(1, 15);
CMTime lastTime=CMTimeMake(index, 15); //インデックスは上記のループの 0 から 29 です
CMTime presentTime=CMTimeAdd(lastTime, frameTime);
//Peter DeWeese によると、機能させるには 2 回呼び出す必要があります。
[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];
}