通过对demo和接口说明的初步了解我们可以清楚的知道,想要实现TV端的多屏监控和云录像查看,其实只要拿到自己的设备信息,然后调用相应的方法进行播放即可了。

首先看这里,官方已给我们提供了一个类似VideoView的FunVideoView类。

再看看这里,播放实时视频的方法,这就简单了,直接在demo中search一下MediaRealPlay(int hUser, String devId, int nChnIndex, int nStreamType, Object hWnd, int nSeq)这个方法就更加直接了。

下面贴一段官方公开的方法,也就是FunVideoView中播放实时视频和云录像视频和本地视频的方法。看这里MediaRealPlay()、MediaNetRecordPlayByTime()、MediaNetRecordPlay()依次为实时、云录像和本地的播放方法。

private void openVideo() {if (!mInited || null == mVideoUrl || mPlayStat != STAT_PLAYING|| null == mSufaceView) {return;}mFishEyeFrame = null;mIsPrepared = false;mPlayPosition = 0;String playPath = getPlayPath(mVideoUrl);if (mVideoUrl.startsWith("real://")) {if (!mIsPlaying) {// 播放实时视频mPlayerHandler = FunSDK.MediaRealPlay(getUserId(), playPath,mChannel, mStreamType.getTypeId(), mSufaceView, 0);// 本来注释的,打开By 吴FunSDK.SetIntAttr(mPlayerHandler,EFUN_ATTR.EOA_SET_MEDIA_DATA_USER, getUserId());FunSDK.MediaSetFluency(mPlayerHandler,SDKCONST.EDECODE_TYPE.EDECODE_REAL_TIME_STREAM6, 0);// 设置流畅度(实时<-->流畅)}mIsPlaying = true;} else if (mVideoUrl.startsWith("time://")) {if (!mIsPlaying) {// 播放录像int fromTime = -1;int toTime = -1;if (playPath.contains("-")) {String[] tmStrs = playPath.split("-");fromTime = Integer.parseInt(tmStrs[0]);toTime = Integer.parseInt(tmStrs[1]);} else {fromTime = Integer.parseInt(playPath);}Date fromDate = new Date((long) fromTime * 1000);H264_DVR_FINDINFO fileInfo = new H264_DVR_FINDINFO();fileInfo.st_0_nChannelN0 = mChannel;fileInfo.st_2_startTime.st_0_dwYear = fromDate.getYear() + 1900;fileInfo.st_2_startTime.st_1_dwMonth = fromDate.getMonth() + 1;fileInfo.st_2_startTime.st_2_dwDay = fromDate.getDate();fileInfo.st_2_startTime.st_3_dwHour = fromDate.getHours();fileInfo.st_2_startTime.st_4_dwMinute = fromDate.getMinutes();fileInfo.st_2_startTime.st_5_dwSecond = fromDate.getSeconds();if (toTime > 0 && toTime > fromTime) {Date toDate = new Date((long) toTime * 1000);fileInfo.st_3_endTime.st_0_dwYear = toDate.getYear() + 1900;fileInfo.st_3_endTime.st_1_dwMonth = toDate.getMonth() + 1;fileInfo.st_3_endTime.st_2_dwDay = toDate.getDate();fileInfo.st_3_endTime.st_3_dwHour = toDate.getHours();fileInfo.st_3_endTime.st_4_dwMinute = toDate.getMinutes();fileInfo.st_3_endTime.st_5_dwSecond = toDate.getSeconds();} else {fileInfo.st_3_endTime.st_0_dwYear = fromDate.getYear() + 1900;fileInfo.st_3_endTime.st_1_dwMonth = fromDate.getMonth() + 1;fileInfo.st_3_endTime.st_2_dwDay = fromDate.getDate();fileInfo.st_3_endTime.st_3_dwHour = 23;fileInfo.st_3_endTime.st_4_dwMinute = 59;fileInfo.st_3_endTime.st_5_dwSecond = 59;}fileInfo.st_6_StreamType = mStreamType.getTypeId();mPlayerHandler = FunSDK.MediaNetRecordPlayByTime(getUserId(),mDeviceSn, G.ObjToBytes(fileInfo), mSufaceView, 0);}mIsPlaying = true;} else if (mVideoUrl.startsWith("file://")) {if (!mIsPlaying) {mPlayerHandler = FunSDK.MediaNetRecordPlay(getUserId(),mDeviceSn, G.ObjToBytes(mVideoFile), mSufaceView, 0);}mIsPlaying = true;}}

到这里为止就可以实现我想要的功能了,接下来剩下的就是多屏的问题了,其实也不难,是你太悲观。看看demo就会发现,其实直接new一个gridview来加载多个FunVideoView就可以了。

    // 初始化播放窗口 9个GridCameraChannelsPreviewsAdapter cadapter = new GridCameraChannelsPreviewsAdapter(this, 9);gridview.setAdapter(cadapter);//播放视频@SuppressLint("ClickableViewAccessibility")public void playrealvideo() {for (int i = 0; i < 10; i++) {View v = gridview.findViewWithTag(i);if (null != v) {funVideoView = (FunVideoView) v.findViewById(R.id.funVideoView1);// funVideoView.getLayoutParams().height = getWindowManager()// .getDefaultDisplay().getHeight() / 4 + 10;textStart = (TextView) v.findViewById(R.id.textVideoStat1);}funVideoView.setOnErrorListener(this);funVideoView.setOnInfoListener(this);funVideoView.setOnTouchListener(new OnItemViewTouchListener(i));funvideovlist.add(funVideoView);textvlist.add(textStart);// 显示状态: 正在打开视频...textStart.setText(R.string.media_player_opening);textStart.setVisibility(View.VISIBLE);// cadapter.notifyDataSetInvalidated();if (i < 4) {//我只有4个摄像头,不判断在低版本下会报错if (mFunDevice.isRemote) {funVideoView.setRealDevice(mFunDevice.getDevSn(), i);} else {String deviceIp = FunSupport.getInstance().getDeviceWifiManager().getGatewayIp();funVideoView.setRealDevice(deviceIp, i);}}}}

熊迈sdk还是实现了很多实用而又不华丽的功能了,详情请参见熊买SDK,OK下班了,说的比较笼统,有什么不懂的可以直接联系官方业务人员,当然只要我知道的也是可以全力解答哈,记住我,我叫玉念聿辉 玉念聿辉 玉念聿辉。

THE END 谢谢查看

编辑:吴明辉

对接熊迈SDK工作记录之实时视频和云录像功能集成相关推荐

  1. 项目实践-SpringBoot项目对接钉钉发送工作通知

    项目实践-SpringBoot项目对接钉钉发送工作通知 **书山有路勤为径,学海无涯苦作舟** 记录程序员生活点点滴滴,希望记录的内容能帮助到努力爬山的各位伙伴!标签:Java/钉钉/工作通知 前言 ...

  2. 雄迈sdk 使用示例_使用增强的API,示例代码和SDK自定义支付解决方案

    雄迈sdk 使用示例 As developers build sites for merchants, we know that payment processing capabilities are ...

  3. 如何通过路由器日志查看路由器是否断网过_路由器本身有一个日志功能,里面存了很多工作记录...

    第一种原因或许是来自路由器内存的问题,路由器本身有一个日志功能,里面存了很多工作记录. 有的路由器本身内存小,用的时间久了日志信息就会占满内存,出现路由器无缘无故卡一下的状况,从而导致网络连接故障,无 ...

  4. 5.20——工作记录

    5.20--工作记录 前言 记录 jsp显示问题 人员详情检索 证件类型 证件号码 变灰 禁用 恢复人员检索信息 总结 前言 记录 jsp显示问题 问题:之前显示成aseid了 问题解决 点详情把人员 ...

  5. 2015年1月工作记录和阅读记录

    2019独角兽企业重金招聘Python工程师标准>>> 关于IT.翻过了2014的一年,也走到了大四的中间.成长说不上,但是眼界是慢慢开阔了.这一年的节奏像流水一样缓慢平稳,没有特别 ...

  6. 5.26——工作记录

    5.26--工作记录 前言 过程 总结 重点 前言 目标:1.准备查询的基础sql 2.查询页面, 3.点击设备编码按钮的显示 4.图片 过程 deviceStatusPerceptionEventI ...

  7. 对接应用宝SDK(YSDK)QQ能登录微信无法登陆的一些解决方法**

    对接应用宝SDK(YSDK)QQ能登录微信无法登陆的一些解决方法 应用宝SDK微信与手Q接入 首先可以去官方文档里查看WXEntryActivity所放的位置是否正确, 还有查看清单文件里 · WXE ...

  8. EasyGBS对接宇视SDK,多次点击录像回放出现崩溃是什么原因?

    EasyGBS国标视频云服务可支持通过国标GB28181协议将设备接入,实现视频的实时监控直播.录像.语音对讲.云存储.告警.级联等功能,同时也支持将接入的视频流进行全终端.全平台分发,分发的视频流包 ...

  9. 5.6-5.8工作记录2—分页模糊查询

    5.6-5.8工作记录2-改造ssh 前言 作战过程 5.7项目上篇--分页模糊查询 jsp ssm PK ssh 准备ssm 对比ssh: 工作bug记录 注意 打怪 查询以及分页 知识点 准备第二 ...

  10. 项目实训工作记录(二)

    项目实训工作记录(二)赵乐乐 201800301115 词向量搜索分析与算法设计 项目实训工作记录(二)赵乐乐 201800301115 1.词向量搜索 2.搜索过程中的问题分析 3.基于效率的算法设 ...

最新文章

  1. 如果企业网站长时间没有排名可以从多个方面进行分析
  2. IT项目之旅(二)篮球计分器(分析、设计、实现)
  3. Python基础:一起来面向对象 (二) 之搜索引擎
  4. SQLite Expert Pro中文版
  5. (Hook)SetWindowsHookEx和UnhookWindowsHookEx
  6. 新特性的副产品--从11g的DEFERRED SEGMENT CREATION说起
  7. 【button】 按钮组件说明
  8. H265编码等级以及图像的基础知识
  9. NAACL’21 | 来看如何让模型学会因为所以但是如果
  10. Linux命令之乐--sed
  11. 深度学习(六十四)Faster R-CNN物体检测
  12. 解析Java对象引用与JVM自动内存管理(2)
  13. mysql not in优化_98%的人不知道的MySQL优化器原理
  14. “37岁,985毕业,年薪50万,被裁掉只用了10分钟”
  15. paip.数组以及集合的操作uapi java php python总结..
  16. visio2010下载地址中文版本32位中文版本64位和激活密钥方法分享哦
  17. 《深入浅出数据分析》读书心得与笔记
  18. JNLP的使用及碰到的一些问题
  19. Queue队列操作-peek、pool、take等区别
  20. 大学生必备:用Python实现shua课自由,又是美好的一天

热门文章

  1. 网络传输的两种方式——同步传输和异步传输的区别
  2. GPIO的同步性约束
  3. trie图:Computer Viruses in Planet Pandora
  4. [转]管理的最高境界不是完美
  5. 设计模式---003代理模式(转载自我的老师 Alley-巷子)
  6. 利率浮动幅度bp什么意思,浮动利率bps换算百分比
  7. 实现旋转六面体(含动画的基本介绍)
  8. RxSwift学习(一) --- RxSwift介绍
  9. uibot和按键精灵区别_uibot和按键精灵有什么区别?
  10. android9自动安装权限9,按键精灵所有者读写权限安卓9.0如何获取?设置