我想将DecodeFrameNoDelay
函数的yuvData
输出格式转换bufferInfo
为 OpenCV 矩阵,我可以使用imshow
函数在窗口上显示框架
将 git 链接到 DecodeFrameNoDelay 详细信息:https ://github.com/cisco/openh264/wiki/ISVCDecoder#decodeframenodelay
下面是我使用 Openh264 解码帧的代码
ISVCDecoder *decoder;
SBufferInfo bufferInfo;
SDecodingParam decodingParam;
uint8_t** yuvData;
void init(int width, int height) {
WelsCreateDecoder(&decoder);
decodingParam = {0};
decodingParam.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_AVC;
decoder->Initialize(&decodingParam);
bufferInfo = {0};
bufferInfo.iBufferStatus = 1;
yuvData = new uint8_t*[3];
yuvData[0] = new uint8_t[width * height];
yuvData[1] = new uint8_t[width * height / 4];
yuvData[2] = new uint8_t[width * height / 4];
}
bool decode(const unsigned char* rawEncodedData, int rawEncodedDataLength, uint8_t** yuvData, char *name) {
int err = decoder->DecodeFrameNoDelay(rawEncodedData, rawEncodedDataLength, yuvData, &bufferInfo);
if (err != 0) {
std::cout << "H264 decoding failed. Error code: " << err << "." << std::endl;
parseErrorCode(err);
return false;
}
printf("H264 decoding success, err: %d, name: %s, status: %d\n", err, name, bufferInfo.iBufferStatus);
return true;
}
任何帮助表示赞赏。
谢谢和最好的问候。