gpt4 book ai didi

ios - 将 CMSampleBufferRef 处理到数组会导致崩溃

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

我想更改电影帧的顺序,然后将它们写回新的视频文件。对我来说,将它们全部放在数组中会容易得多,但是将缓冲区样本复制到数组的过程会导致在真实设备上崩溃(但在模拟器中没问题)。我在 Xcode 中只能看到消息:在此过程中“失去与 DEVICE_NAME 的连接”- 没有崩溃日志等。

所以让我们从不会引起任何问题的事情开始:打印每一帧的时间戳

CMSampleBufferRef sample;

while(sample = [readerOutput copyNextSampleBuffer]) {
CMTime timestamp = CMSampleBufferGetPresentationTimeStamp((__bridge CMSampleBufferRef)(__bridge id)sample);
NSLog(@"%f", (float)timestamp.value / timestamp.timescale);

CFRelease(sample);
}

但是当我尝试以这种方式将样本缓冲区复制到数组时:

 NSMutableArray *samples = [[NSMutableArray alloc] init];

CMSampleBufferRef sample;
while(sample = [readerOutput copyNextSampleBuffer]) {
[samples addObject:(__bridge id)sample];
CMSampleBufferInvalidate(sample);
CFRelease(sample);
sample = NULL;
}

或者这样

  CFMutableArrayRef frameArray = CFArrayCreateMutable(NULL, 1000, &kCFTypeArrayCallBacks);

sample = [readerOutput copyNextSampleBuffer];
while (sample != NULL) {
sample = [readerOutput copyNextSampleBuffer];

if (sample != NULL) {
CFArrayAppendValue(frameArray, sample);
}

CFRelease(sample);
}

它崩溃了。我是否在尝试做一些不可能的事情?

最佳答案

可以转换为UIImage然后添加到数组中,但是使用的时候需要转换回CMSampleBufferRef,可能会有点耗时

关于ios - 将 CMSampleBufferRef 处理到数组会导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35853683/

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