将创世视频嵌入到RCP程序中

时间:2023-01-20 21:48:54

经过三天的摸索,终于将创世的视频嵌入到RCP程序中,关键的技术点有:

  1. 创世NrcapPlusSDK开发,使用两个动态库NrcappcSDK.dll和VARender.dll,NrcappcSDK.dll用于视频数据的接收,VARender.dll用于视频的显示;
    1. NrcappcSDK.dll调用顺序为NcInitialize(初始化)、NcRegisterStreamReadCallback(设置回调函数)、NcOpen(登录)、NcStartStreamCapture(开始捕获数据),应该还有NcStopStreamCapture(停止捕获)和NcClose(断开连接);其它事件和云台控制暂时不用;
    2. VARender.dll调用顺序为VADR_Init(初始化)、VADR_SetVideoRect(设置显示范围)、VADR_SetPlayWnd(设置显示窗口)、VADR_StartPreview(开始显示),还有VADR_StopPreview(停止解码显示);
      1. Java调用dll动态库,在网上找了一下,了解到java本身使用jni实现,但使用复杂,另有一些开源项目对此进一步封装,简化处理,开始使用JNative项目,实现了一些NrcappcSDK的调用过程,后来发现使用JNA更为简单方便,需要注意的是函数参数类型的对应关系,这里给出NrcappcSDK.dll和VARender.dll的封装定义:

        RCP程序中显示视屏,在简单的测试中,在一个Shell中能正确显示视屏,但使用RCP的Composite却不能显示,在RCP程序开一个新的Display打开一个Shell却不行,进一步使用Composite中的display打开一个Shell,总算可以显示了,但总觉得这样不能很好地融入整个程序中,倒像一个外部程序,打算先就这样吧,突然想起第三方程序的界面都可以完全嵌入RCP程序中,这里应该也可以吧!立即动手,加入代码:
      2. 运行程序,视频完美地嵌入RCP程序了!!