[英]Decode video in Cuda using a socket / memory instead of a file
我目前正在嘗試使用cuda解碼視頻。 我有一個名為cudaDecodeD3D9
的cuda樣本。 此示例使用名為cuvidCreateVideoSource
的方法,該方法獲取指向源視頻的文件指針。 有沒有辦法讓Cuda從內存/套接字/流加載視頻?
事實證明我根本不能使用cuvidCreateVideoSource
方法,但我可以通過調用cuvidParseVideoData
將每幀數據直接提供給cuda視頻解析器。
這是一個從文件中讀取一幀並將其提供給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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.