我这边有个需求,想用大华sdk将预览流数据转成ps流,但是现在都转成了,但是有些ps流数据不太规范不能拿来就用


有些ps流数据不会触发zlmediakit ps的回调,问作者是因为ps流不太规范,导致不触发ps回调,进而引起视频流丢帧卡顿现象
想要的结果: 可以预览的回调数据转换成标准的ps流规范
可以有偿
我这边有个需求,想用大华sdk将预览流数据转成ps流,但是现在都转成了,但是有些ps流数据不太规范不能拿来就用


想要的结果: 可以预览的回调数据转换成标准的ps流规范
可以有偿
关注让 “紫雾凌寒” 来帮你回答,本回答结合 DeepSeek
如果还有问题,请评论或点击头像私信,如果有帮助到您, 请关注、采纳、点赞
// 假设已经初始化了相关大华SDK的上下文等
NET_DVR_CLIENTINFO clientInfo;
memset(&clientInfo, 0, sizeof(clientInfo));
// 设置客户端信息
LONG lRealPlayHandle = CLIENT_RealPlayByDataType(hDevice, &clientInfo, NULL, NULL, 0, NULL, &dwDataType);
// 这里dwDataType用于指定转码相关的数据类型,检查其设置是否正确
// 可能需要进一步设置转码相关参数,如视频编码格式等
NET_DVR_STREAMCFG_V30 streamCfg;
memset(&streamCfg, 0, sizeof(streamCfg));
streamCfg.dwSize = sizeof(streamCfg);
streamCfg.struVideoEncodePara.dwCodecType = VIDEO_CODEC_H264; // 假设设置为H264编码
streamCfg.struVideoEncodePara.dwVideoFormat = VIDEO_FORMAT_I420; // 视频格式
// 根据zlmediakit要求调整分辨率、帧率等参数
streamCfg.struVideoEncodePara.dwFrameRate = 25; // 帧率
streamCfg.struVideoEncodePara.dwPicWidth = 1920; // 宽度
streamCfg.struVideoEncodePara.dwPicHeight = 1080; // 高度
if (!CLIENT_SetStreamCFG(lRealPlayHandle, NET_DVR_SETTYPE_STREAMCFG_V30, &streamCfg, sizeof(streamCfg)))
{
printf("CLIENT_SetStreamCFG failed, error code: %d\n", CLIENT_GetLastError());
}
for (int width = 1280; width <= 1920; width += 320)
{
for (int height = 720; height <= 1080; height += 180)
{
for (int frameRate = 15; frameRate <= 30; frameRate += 5)
{
// 设置转码参数
streamCfg.struVideoEncodePara.dwPicWidth = width;
streamCfg.struVideoEncodePara.dwPicHeight = height;
streamCfg.struVideoEncodePara.dwFrameRate = frameRate;
if (!CLIENT_SetStreamCFG(lRealPlayHandle, NET_DVR_SETTYPE_STREAMCFG_V30, &streamCfg, sizeof(streamCfg)))
{
printf("CLIENT_SetStreamCFG failed, error code: %d\n", CLIENT_GetLastError());
}
// 进行转码操作,获取PS流并检查其规范性
// 这里可以添加代码来获取生成的PS流并分析其是否规范
}
}
}
希望以上解答对您有所帮助。如果您有任何疑问,欢迎在评论区提出。