2

我想知道是否有人可以在这里为我指明正确的方向。

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

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

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

我想我的问题真的是:

  1. 这可能吗?
  2. 有谁知道任何可以完成此操作或类似内容的代码示例(或教程、论文、手册等)?

谢谢!

4

1 回答 1

1

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

当然,得到你提议的实时运行是另一回事......

于 2013-03-02T21:50:35.377 回答