gpt4 book ai didi

ios - 使用 VTCompressionSession 压缩的视频捕获播放速度太快

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:34:06 25 4
gpt4 key购买 nike

我正在从 AVCaptureVideoDataOutput 接收原始 RGBA 数据,并使用 VTCompressionSession 将其压缩为原始 H264 流。

我遇到的问题是生成的流播放速度太快(在 VLC 中播放),大约是实际速度的 3 倍。

我正在使用捕获数据中的呈现时间和持续时间。使用 AVFileMovieOutput 可以正常工作,但我想更好地控制压缩。

我已经尝试设置 kVTCompressionPropertyKey_ExpectedFrameRate 但这没有区别。

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
fromConnection:(AVCaptureConnection *)connection {

CMTime presentationTime = CMSampleBufferGetPresentationTimeStamp(sampleBuffer);
CMTime duration = CMSampleBufferGetDuration(sampleBuffer);

CVImageBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
CVPixelBufferLockBaseAddress(pixelBuffer, 0);

OSStatus encodeStatus = VTCompressionSessionEncodeFrame(compressionSession, pixelBuffer, presentationTime, duration, NULL, NULL, NULL);
if (encodeStatus != noErr) {
NSLog(@"Encode error.");
}

CVPixelBufferUnlockBaseAddress(pixelBuffer, 0);
}

最佳答案

我是:

CFAbsoluteTime currentTime = CFAbsoluteTimeGetCurrent();
CMTime presentationTimeStamp = CMTimeMake(currentTime*27000000, 27000000);
VTCompressionSessionEncodeFrame(_enc_session, imageBuffer, presentationTimeStamp, kCMTimeInvalid, NULL, NULL, NULL);

还有。你如何启动你的压缩 session ?您将哪些“k”参数设置为什么?

关于ios - 使用 VTCompressionSession 压缩的视频捕获播放速度太快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35196264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com