1

いくつかのコードを投稿するのが好きなので、新しいスレッドが必要です。小さなコメントセクションではできません。

以前はピーター・デウィーズに感謝しましたが、まだ問題があります..

スクリーンキャプチャを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];

}

4

0 に答える 0