Video CUDA:实时视频后处理

Video CUDA:实时视频后处理,video,cuda,rendering,real-time,post-processing,Video,Cuda,Rendering,Real Time,Post Processing,我想知道是否有人能给我指出正确的方向 假设我有一个采用某种编码(例如H.264)的视频文件,我使用CUDA的视频解码库对该视频进行解码(https://developer.nvidia.com/nvidia-codec-libraries). 这样做(我想)是解码视频并在屏幕上播放。到目前为止还不错 现在,我真正想做的是修改解码库(或者写一个包装器,或者类似的东西),对视频帧执行一些后处理 例如,假设视频有1000帧,我想(实时地)给一些帧(由用户指定)添加一些自定义效果(例如,渲染一个用户传入

我想知道是否有人能给我指出正确的方向

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

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

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

我想我的问题是:

  • 这可能吗
  • 有人知道有任何代码示例可以实现这一点或类似的功能(或教程、论文、手册等)

  • 谢谢

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


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

    您也可以考虑在音频视频产品StAdExchange上发布。可能有人从A/V角度(现有软件解决方案等)有更多的见解