海康威视设备网络sdk预览获取的码流如何转换推送到rtmp

发布于 2022-09-12 13:09:54 字数 2297 浏览 59 评论 0

问题描述

海康威视设备网络sdk预览获取的码流如何转换推送到rtmp

问题出现的环境背景及自己尝试过哪些方法

海康的接口文档
预览接口NET_DVR_RealPlay_V40中预览参数的播放窗口句柄(hPlayWnd)可以设置为空值,直接设置回调函数,或者调用预览接口之后,通过NET_DVR_SetRealDataCallBack、NET_DVR_SetStandardDataCallBack设置回调函数,回调获取实时流数据(前两个接口设置的回调获取的是PS封装的码流,后者获取的是标准RTP封装的码流)之后用户后续自己处理,比如二进制流方式写入文件保存成录像或者调用播放库解码显示等操作。

image.png

目前能得到码流byte数组
image.png
image.png

之前做过海康的rtsp转rtmp,用的javaCV的
FFmpegFrameGrabber 和 FFmpegFrameRecorder

现在通过获取的byte[] 怎么解析转换为rtmp,求解

相关代码

/******************************************************************************
 *内部类:   FRealDataCallBack *          实现预览回调数据 ******************************************************************************/class FRealDataCallBack implements HCNetSDK.FRealDataCallBack_V30 {
    /**
 * 预览回调 * * @param lRealHandle 当前的预览句柄
 * @param dwDataType 数据类型
 * @param pBuffer 存放数据的缓冲区指针
 * @param dwBufSize 缓冲区大小
 * @param pUser 用户数据
 */ @Override
 public void invoke(int lRealHandle, int dwDataType, ByteByReference pBuffer, int dwBufSize, Pointer pUser) {
        System.out.println(dwBufSize);
 byte[] bytes = ref2Bytes(pBuffer, dwBufSize);
 if (videoConverter == null) {
            //videoConverter = new VideoConverter();
 }
        // PS封装的码流
 if (dwDataType == HCNetSDK.NET_DVR_SYSHEAD) { //系统头
 System.out.println("系统头");
 } else if (dwDataType == HCNetSDK.NET_DVR_STREAMDATA) { //流数据(包括复合流或音视频分开的视频流数据)
 System.out.println("码流数据");
 //videoConverter.convert(bytes);
 } else if (dwDataType == HCNetSDK.NET_DVR_AUDIOSTREAMDATA) { // 音频数据
 System.out.println("音频数据");
 } else if (dwDataType == HCNetSDK.NET_DVR_PRIVATE_DATA) { //私有数据,包括智能信息
 System.out.println("私有数据,包括智能信息");
 } else {
            System.out.println("其他: " + dwDataType);
 }
        System.out.println(HexUtils.bytes2Hex(bytes));
 System.out.println("-------------------------------------------------");
 }
    public byte[] ref2Bytes(ByteByReference buf, int dwBufSize) {
        return buf.getPointer().getByteArray(0, dwBufSize); //此处为通过字节指针获取指定长度的字节数组
 }
}

你期待的结果是什么?实际看到的错误信息又是什么?

通过海康sdk的预览回调,获取的码流,转换推送到rtmp

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文