0

我正在开发一个 iOS 应用程序,该应用程序从互联网连接随机获取 UIImages,并在图像进入时逐步从它们构建一个视频文件。我让它工作了一点,但图像并没有到达相同的事实率一直在搞乱视频。

当每个新的 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,而是将 10 加到 frameTime.value。

于 2013-03-09T20:29:44.860 回答