我目前正在尝试使用cuda解码视频.我有一个叫做的cuda样本cudaDecodeD3D9.此示例使用一种方法cuvidCreateVideoSource,该方法将文件指针指向源视频.有没有办法让Cuda从内存/套接字/流加载视频?
事实证明我根本无法使用cuvidCreateVideoSource方法,但我可以通过调用直接将每帧数据提供给cuda视频解析器cuvidParseVideoData.
这是一个从文件中读取一帧并将其提供给cuda解析器的示例.该文件是由我创建的,通过将每个帧的大小写入文件,然后是帧数据.通过从套接字读取,可以轻松替换该文件:
unsigned int size = 0u;
fread( &size, sizeof( unsigned char ), sizeof( unsigned int ), _file );
unsigned char *buf = new unsigned char[size];
fread( buf, sizeof( unsigned char ), size, _file );
CUVIDSOURCEDATAPACKET packet = {};
packet.payload_size = size;
packet.payload = buf;
cuvidParseVideoData( pCudaParser, &packet );
delete [] buf;
Run Code Online (Sandbox Code Playgroud)