使用 AVPlayer 播放 CMSampleBufferRef

Playing CMSampleBufferRef's with AVPlayer

我正在开发一个 OSX 视频编辑应用程序,并且在一个数组中有一组 CMSampleBufferRef,代表视频的每一帧。

我想使用 AVPlayer 渲染视频预览 - 是否可以将这些样本直接输入到 AVPlayer 中?

我看过大部分 AVFoundation 类。我知道我可以使用 AVAssetWriter 写入文件,但我想避免这种情况,因为用户仍将进行更多编辑(拥有原始帧数据真是太好了)。

有什么想法吗?

是的,你可以。

首先,您应该将 CMSampleBufferRef 转换为 CGImageRef,这样您就可以在屏幕上显示帧样本。

This answer 拥有完成此操作所需的所有代码。

关于玩 AVPlayer,我不确定你是否真的需要这样做,因为你可以通过你的 CMSampleBufferRef array 并且您能够正确地转换和渲染这些样本,我认为没有必要将这些样本放在 AVPlayer,相反,您可以直接渲染 CGImageCALayer.

希望对您有所帮助