liang040707
liang040707
采纳率0%
2021-03-06 22:11

Java 大华SDK问题

如题,Java如何通过官方SDK接口获取大华监控的实时视频流帧,有偿

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • ruoshui77 Johar 1月前

    一般大华的sdk有两种方式,一种是把窗口句柄直接传给sdk,画面直接显示,不用管解码显示,最为方便;另外一种是通过注册回调方法,返回数据流,sdk demo里面均有实现,见General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000002.0.R.201103中RealplayEx:

    public void realplay(){
       lRealHandle= netSdk.CLIENT_RealPlayEx(loginHandle, 0, null, 0);
           if(lRealHandle.longValue()!=0){
               System.out.println("realplay success");
               netSdk.CLIENT_SetRealDataCallBackEx(lRealHandle, CbfRealDataCallBackEx.getInstance(),null, 31);
           }
    }
    /**
       * 实时监视数据回调函数--扩展(pBuffer内存由SDK内部申请释放)
       */
      private static class CbfRealDataCallBackEx implements NetSDKLib.fRealDataCallBackEx {
          private CbfRealDataCallBackEx() {
          }
    
          private static class CallBackHolder {
              private static CbfRealDataCallBackEx instance = new CbfRealDataCallBackEx();
          }
    
          public static CbfRealDataCallBackEx getInstance() {
              return CallBackHolder.instance;
          }
    
    @Override
    public void invoke(LLong lRealHandle, int dwDataType, Pointer pBuffer,
          int dwBufSize, int param, Pointer dwUser) {
       int bInput=0;
       if(0 != lRealHandle.longValue())
       {
          switch(dwDataType) {
          case 0:
             System.out.println("码流大小为" + dwBufSize + "\n" + "码流类型为原始音视频混合数据");             
             break;
          case 1:
             //标准视频数据
             
             break;
          case 2:
             //yuv 数据
             
             break;
          case 3:
             //pcm 音频数据
             
             break;
          case 4:
             //原始音频数据
             
             break;
          default:
             break;
          }  
       }
    }
      }
    点赞 评论 复制链接分享