CUDA:实时视频后期处理

时间:2012-11-21 03:03:10

标签: video cuda rendering real-time post-processing

我想知道是否有人能指出我在这方面的正确方向。

假设我有一些编码的视频文件(例如,H.264),我使用CUDA的视频解码库(https://developer.nvidia.com/nvidia-codec-libraries)解码该视频。这会做什么(我猜),它会解码视频并在屏幕上播放。到目前为止一切都很好。

现在,我真正想做的是修改解码库(或编写包装器,或类似的东西),对视频帧执行一些后处理。

例如,假设视频有1000帧,我想(实时)向帧的某些(由用户指定)添加一些自定义效果(例如,渲染)一个3d模型---由用户传入---并将输出覆盖到框架中的某个位置,等等。

我想我的问题确实是:

  1. 这有可能吗?
  2. 是否有人知道任何可以完成此类或类似内容的代码示例(或教程,论文,手册,任何内容)?
  3. 谢谢!

1 个答案:

答案 0 :(得分:1)

这当然是可能的。 CUDA视频解码库将为您提供视频帧作为NV12格式矩阵,然后您可以随意执行任何操作。没有什么可以自动将解码后的帧显示到屏幕上;你必须自己照顾那部分。如果您希望实时运行,那么您应该查看CUDA< - > OpenGL互操作性,因为您可以将OpenGL缓冲区,纹理和渲染缓冲区对象映射到CUDA的地址空间,因此如果将处理后的帧输出到映射对象,则可以直接显示。我建议查看CUDA样本cudaDecodeGL或cudaDecodeD3D9(如果你喜欢DirectX而不是OpenGL)。

当然,获得实时运行的建议是另一回事......