0

我需要将三个短视频文件(每个 3 分钟)中的所有帧读入内存(NSArrayof CMSampleBufferRef)。我使用了典型的方法AVAsset和循环调用。AVAssetReaderAVAssetReaderTrackOutputcopyNextSampleBufferwhile

它适用于 1 个文件 - 所有 3570 个样本都已加载。如果我尝试再加载两个文件(按顺序) - 第二个仅加载 1820 个样本,第三个加载 0,错误为 -1189(无法打开)。我尝试了主线程、后台线程和指定线程(dispatch_queue_t并发或串行 - 效果相同)。

如果我尝试同时加载所有三个(每个都有自己的dispatch_queue_t) - 所有三个加载大约 1800 个样本而没有任何错误(这不是视频的完整长度)。

作为我在 Xcode 中运行我的应用程序后的一个奇怪的副作用 - 我在整个系统中(在 Chrome、Finder、拖动窗口时)得到窗口(和网页)呈现故障。

将所有视频样本从背景中的多个视频加载到数组中以不锁定 UI(同时或顺序)的正确方法是什么?

4

0 回答 0