我想知道是否有人能指出我在这方面的正确方向。
假设我有一些编码的视频文件(例如,H.264),我使用CUDA的视频解码库(https://developer.nvidia.com/nvidia-codec-libraries)解码该视频。这会做什么(我猜),它会解码视频并在屏幕上播放。到目前为止一切都很好。
现在,我真正想做的是修改解码库(或编写包装器,或类似的东西),对视频帧执行一些后处理。
例如,假设视频有1000帧,我想(实时)向帧的某些(由用户指定)添加一些自定义效果(例如,渲染)一个3d模型---由用户传入---并将输出覆盖到框架中的某个位置,等等。
我想我的问题确实是:
谢谢!
答案 0 :(得分:1)
这当然是可能的。 CUDA视频解码库将为您提供视频帧作为NV12格式矩阵,然后您可以随意执行任何操作。没有什么可以自动将解码后的帧显示到屏幕上;你必须自己照顾那部分。如果您希望实时运行,那么您应该查看CUDA< - > OpenGL互操作性,因为您可以将OpenGL缓冲区,纹理和渲染缓冲区对象映射到CUDA的地址空间,因此如果将处理后的帧输出到映射对象,则可以直接显示。我建议查看CUDA样本cudaDecodeGL或cudaDecodeD3D9(如果你喜欢DirectX而不是OpenGL)。
当然,获得实时运行的建议是另一回事......