C++ 使用随机存取对H264进行解码

C++ 使用随机存取对H264进行解码,c++,video,h.264,nvenc,nvdec,C++,Video,H.264,Nvenc,Nvdec,我想访问H264文件中的随机帧,并将解码图像映射到Direct3D纹理。我正在使用。我已经找到了版本8.0中包含的NVDecoded3DD11示例,并将其精简为bear essentials 基本上,我想实现与中提出的相同的想法: 我的文件只能是IDR帧,但也可以包括p帧 轻松访问样本: 我理解链接问题中的想法,但我不知道在哪里以及如何实现这一点。这是一个很好的问题,恐怕需要做很多工作。您必须完全熟悉I和P帧格式。接下来,您将了解如何搜索帧头,并使用指向I帧头的指针形成一个缓冲区。在那之后,你必

我想访问H264文件中的随机帧,并将解码图像映射到Direct3D纹理。我正在使用。我已经找到了版本8.0中包含的NVDecoded3DD11示例,并将其精简为bear essentials

基本上,我想实现与中提出的相同的想法:

我的文件只能是IDR帧,但也可以包括p帧

轻松访问样本:


我理解链接问题中的想法,但我不知道在哪里以及如何实现这一点。

这是一个很好的问题,恐怕需要做很多工作。您必须完全熟悉I和P帧格式。接下来,您将了解如何搜索帧头,并使用指向I帧头的指针形成一个缓冲区。在那之后,你必须设计一个系统,当从标记当前帧的指针开始播放时,可以作为常规播放使用,或者可以通过倒带缓冲区指针索引快速前进或后退。研究这一点,你就能找到解决办法。很可能已经有了这方面的开源代码,但这需要更多的搜索。您可以尝试悬赏。

至少向我们展示您目前掌握的代码。更好的是;a.@JesperJuhl我没有包括这个示例,因为包含动态头的最小工作项目超过1000行代码。目前在NVIDIA视频编解码器SDK上没有可用的文档文件,所以我不知道应该在哪里进行更改。。。