gpt4 book ai didi

ios - 将 CMSampleBufferRef 缓冲到 CFArray 中

转载 作者:可可西里 更新时间:2023-11-01 05:56:48 24 4
gpt4 key购买 nike

我正在尝试将从 iPhone 的摄像机接收到的 150 CMSampleBufferRef 收集到数组中。 相机在 13 个缓冲区后以某种方式停止调用委托(delegate)。 我尝试使用 NSMutableArray、CFArray。没有任何帮助。 我怀疑它与内存有关,但我对内存警告一无所知。

我很乐意为此提供一些帮助。
先谢谢了。

            session = [[AVCaptureSession alloc]init];
//Quality Preset
if ([session canSetSessionPreset:AVCaptureSessionPresetLow]) {
session.sessionPreset = AVCaptureSessionPresetLow;
}


[session beginConfiguration];
AVCaptureDevice *videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
AVCaptureDeviceInput *newVideoDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:videoDevice error:nil];

AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init];

output.videoSettings = @{ (NSString *)kCVPixelBufferPixelFormatTypeKey : @(kCVPixelFormatType_32BGRA) };
dispatch_queue_t queue = dispatch_queue_create("MyQueue", NULL);
[output setSampleBufferDelegate:self queue:queue];

[session addOutput:output];
[session addInput:newVideoDeviceInput];
AVCaptureConnection *conn = [output connectionWithMediaType:AVMediaTypeVideo];



if (conn.supportsVideoMinFrameDuration)
conn.videoMinFrameDuration = CMTimeMake(1, 10);
if (conn.supportsVideoMaxFrameDuration)
conn.videoMaxFrameDuration = CMTimeMake(1, 10);


[session commitConfiguration];

arr = CFArrayCreateMutable( NULL, 150, &kCFTypeArrayCallBacks );
counter=0;
[session startRunning];

那是我的 StartRecording 方法。

        - (void)captureOutput:(AVCaptureOutput *)captureOutput
didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
fromConnection:(AVCaptureConnection *)connection {
if (counter==150) {
[self StopRecording:nil];
return;
}
CFArrayInsertValueAtIndex(arr, counter, sampleBuffer);

counter= (counter+1)%150;

}
@end

这就是缓冲区收集方法。

最佳答案

你想做什么?AVFoundation 将 CMSampleBuffer 传递给硬件编码器。我的理论是,当它没有检测到传入的帧时,它就会停止向您传递帧。相反,请尝试将 CVPixelBufferRef 存储在 CVPixelBufferPool 中。

CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);

关于ios - 将 CMSampleBufferRef 缓冲到 CFArray 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13531878/

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