0

私は、インターネット接続からランダムに 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);
     }
  }
4

1 に答える 1

0

フレーム数にもよります。1 を追加する代わりに、frameTime.value に 10 を追加します。

于 2013-03-09T20:29:44.860 に答える