mobile CCTV,mobile surveillance,police body worn cameras

 forgetPW
 registerNow
search
Owner: 王.studio
打印 prevThread nextThread

音视频开发流程

[copyURL]

4

主题

70

帖子

242

积分

midMem

Rank: 3Rank: 3

积分
242
owner
poston 2020-5-28 09:31 | 显示全部楼层
王.studio post on2020-5-28 09:17
这个截图里的CU 就是新代码。没改过CU。 如果是我旧版本改了,新版本共用了的化。。能跟我说下在哪里改回 ...

getRandomID()方法中的 “CU_” 改成 “UA_”即可,如果不行就卸载再重新安装
reply agree Against

使用道具 report

4

主题

70

帖子

242

积分

midMem

Rank: 3Rank: 3

积分
242
sofa
poston 2020-6-2 10:28 | 显示全部楼层
王.studio post on2020-6-2 10:05
还有就是 demo里 MainActivity里的 getClientID().substring(3)  获取的id  能否作为puid使用? 我看着点击 ...

我们MCP程序里使用的PU_ID、CU_ID和UA_ID为了保证唯一性是根据设备的IMEI号或者MAC地址生成的,BVCU_DEMO中默认的ID只是临时生成的一个随机数,不过第一次生成后会持久保存,后面就一直使用第一次生成的这个随机数
reply agree Against

使用道具 report

4

主题

70

帖子

242

积分

midMem

Rank: 3Rank: 3

积分
242
bench
poston 2020-6-8 15:48 | 显示全部楼层
Arthur post on2020-6-8 14:51
我这边测试正常的,你看换下网络,或者连我们的服务器试试。

一共发了两次DEMO的代码,你们用后面发的代码测试了吗?我这边测试正常
第二次的改动主要是被动接收invte时的回调处理:@Override
public void OnPasvDialogEvent(int hDialog, int iEventCode, BVCU_Event_DialogCmd pParam) {
   Log.d(TAG, "被动 OnPasvDialogEvent hDialog :" + hDialog + " iEventCode : " +iEventCode + " pParam : " + new Gson().toJson(pParam));
   if (myBvcuEventCallback != null) {
      myBvcuEventCallback.OnPasvDialogEvent(hDialog, iEventCode, pParam);
   }
   int channelIndex = pParam.pDialogParam.pTarget[0].iIndexMajor;
   int dir = pParam.pDialogParam.iAVStreamDir;
   Log.d(TAG, "OnPasvDialogEvent------hDialog=" + hDialog + ",iEventCode=" + iEventCode + ",channelIndex=" + channelIndex + ",dir=" + dir);
   switch (iEventCode) {
      case BVCU_EVENT_DIALOG.BVCU_EVENT_DIALOG_OPEN:
         Log.d(TAG, "DIALOG_OPEN命令");
         if (pParam.iResult == BVCU_Result.BVCU_RESULT_S_PENDING) {
         }
         break;
      case BVCU_EVENT_DIALOG.BVCU_EVENT_DIALOG_CLOSE:
         Log.d(TAG, "DIALOG_CLOSE命令");
         if (channelIndex == BVCU_SubDev.BVCU_SUBDEV_INDEXMAJOR_MIN_CHANNEL) {
            tempAvDir = 0;
            if (dir == 0) {
               sendVideoData = false;
               if (recorderUtils.isRecording()) {
                  recorderUtils.stopRecorder();
               }
               mHandler.sendEmptyMessage(MESSAGE_TRANSFER_NOTHING);
            }
         }
         if (channelIndex == BVCU_SubDev.BVCU_SUBDEV_INDEXMAJOR_MIN_GPS && dir == 0) {
            locationTools.stopLocation();
         }
         break;
   }
}

@Override
public int OnPasvDialogCmd(int hDialog, int iEventCode, BVCU_DialogParam pParam) {
   Log.d(TAG, "被动 OnPasvDialogCmd hDialog :" + hDialog + " iEventCode : " + iEventCode + " pParam : " + new Gson().toJson(pParam));
   if (myBvcuEventCallback != null) {
      myBvcuEventCallback.OnPasvDialogCmd(hDialog, iEventCode, pParam);
   }
   int channelIndex = pParam.pTarget[0].iIndexMajor;
   int avDir = pParam.iAVStreamDir;
   Log.d(TAG, "OnPasvDialogCmd ------channelIndex=" + channelIndex + ",avDir=" + avDir);

   if (channelIndex >= BVCU_SubDev.BVCU_SUBDEV_INDEXMAJOR_MIN_CHANNEL && channelIndex <= BVCU_SubDev.BVCU_SUBDEV_INDEXMAJOR_MAX_CHANNEL) {
      Message message = Message.obtain();
      message.what = MESSAGE_TRANSFER_STATUS;
      message.obj = getTransferState(avDir);
      mHandler.sendMessage(message);
      /*****************************************************/
      if ((avDir & BVCU_MEDIADIR_VIDEOSEND) == BVCU_MEDIADIR_VIDEOSEND &&
            (tempAvDir & BVCU_MEDIADIR_VIDEOSEND) != BVCU_MEDIADIR_VIDEOSEND) {
         sendVideoData = true;
      } else if ((tempAvDir & BVCU_MEDIADIR_VIDEOSEND) == BVCU_MEDIADIR_VIDEOSEND
            && (avDir & BVCU_MEDIADIR_VIDEOSEND) != BVCU_MEDIADIR_VIDEOSEND) {
         sendVideoData = false;
      }

      if ((avDir & BVCU_MEDIADIR_AUDIOSEND) == BVCU_MEDIADIR_AUDIOSEND &&
            (tempAvDir & BVCU_MEDIADIR_AUDIOSEND) != BVCU_MEDIADIR_AUDIOSEND) {
         if (!recorderUtils.isRecording()) {
            recorderUtils.startRecorder();
         }
      } else if ((avDir & BVCU_MEDIADIR_AUDIOSEND) != BVCU_MEDIADIR_AUDIOSEND &&
            (tempAvDir & BVCU_MEDIADIR_AUDIOSEND) == BVCU_MEDIADIR_AUDIOSEND) {
         if (recorderUtils.isRecording()) {
            recorderUtils.stopRecorder();
         }
      }
      /*****************************************************/
      updateParam(pParam);
      tempAvDir = avDir;
   } else if (channelIndex >= BVCU_SubDev.BVCU_SUBDEV_INDEXMAJOR_MIN_GPS && channelIndex <= BVCU_SubDev.BVCU_SUBDEV_INDEXMAJOR_MAX_GPS) {
      if (avDir == BVCU_MediaDir.BVCU_MEDIADIR_DATASEND) {
         locationTools.startLocation();
      }
   }
   return 0;
}
reply agree Against

使用道具 report

4

主题

70

帖子

242

积分

midMem

Rank: 3Rank: 3

积分
242
ground
poston 2020-6-8 15:57 | 显示全部楼层
这是我这边测试打开DEMO音视频的视频,demo是运行在你们的设备上的

本帖子中包含更多资源

pls login 才可以下载或查看,没有帐号?registerNow

x
reply agree Against

使用道具 report

4

主题

70

帖子

242

积分

midMem

Rank: 3Rank: 3

积分
242
5#
poston 2020-6-8 16:06 | 显示全部楼层
IP:61.191.27.18 PORT:9701 UserName:test Password:123 // 主动INVITE的管理员账号
IP:61.191.27.18 PORT:9701 UserName:qq2 Password:1     // 设备登录的账号
reply agree Against

使用道具 report

4

主题

70

帖子

242

积分

midMem

Rank: 3Rank: 3

积分
242
6#
poston 2020-6-8 16:32 | 显示全部楼层
我看了一下你们发的视频,两台测试设备都在视频预览界面,在跳转到视频预览界面时,MainActivity的surfaceDestroyed执行,相机被释放,所以没有视频,你们可以让被查看的设备保持在主界面来测试,后面你们可以把视频采集单独写,可以参考MCP
reply agree Against

使用道具 report

4

主题

70

帖子

242

积分

midMem

Rank: 3Rank: 3

积分
242
7#
poston 2020-6-8 16:36 | 显示全部楼层
各种事件回调我们MCP是在服务里绑定的,MainService BVCU_Callback bvcu_callback = new BVCU_Callback(this);  mpu.setBvcu_callback(bvcu_callback);你们集成到自己的APP时也可以这么实现,最好不要依赖某个Activity实现
reply agree Against

使用道具 report

creditRule

QQ|wireless surveillance

GMT+8, 2024-5-4 00:00 , Processed in 0.069331 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

QuickReply backToTop BackToList