簡體   English   中英

使用套接字/內存而不是文件在Cuda中解碼視頻

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM