video - CUDA:实时视频后处理

标签 video cuda rendering real-time post-processing

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

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

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

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

我想我的问题确实是:

  1. 这可能吗?
  2. 有人知道可以完成此任务或类似任务的任何代码示例(或教程、论文、手册等任何东西)吗?

谢谢!

最佳答案

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

当然,让你打算实时运行的东西是另一回事......

关于video - CUDA:实时视频后处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13485700/

相关文章:

css - 调整 Squarespace 标题图像容器的大小不会调整内部图像的大小

ios - 在 iOS 7 横向模式下播放视频

objective-c - 有没有办法检测视频中的面部特征?

c - CUDA 上的定时内核执行

android - 渲染错误android studio

rendering - 什么 API 蓝图渲染器可以生成用于 API 文档目的的三列 html 文件?

video - Ffmpeg concat demuxer 改变视频流开始时间

c++11 - unique_ptr 和 cudaMalloc 的使用

c++ - 在 CUDA 中添加时返回不正确的数字

ruby-on-rails - 如何将一些参数传递给默认渲染方法?