您的位置:首页 > 其它

如何实现安全的音视频通话

2014-11-21 11:41 295 查看
自AnyChat r4036版本开始,AnyChat开放语音、视频流数据加密、解密接口,由上层应用对底层的语音、视频数据流进行自主的加密、解密操作,实现安全的视频通话。其基本原理是:

1、AnyChat通过回调函数的方式,将底层的语音、视频流数据(编码之后的数据)回调给上层应用;

2、由上层应用实现加密、解密的操作,然后将加密、解密之后的数据拷贝到输出缓冲区;

3、加密、解密完成之后,AnyChat再继续对输出缓冲区的数据进行后续的处理;

4、加密、解密的算法由上层应用自定义;

下面以Android平台为例说明如何实现语音、视频数据的加密、解密流程:1、在视频通话Activity初始化SDK之后,开启数据加密、解密选项,并注册回调事件:

anychat = new AnyChatCoreSDK();

AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_CORESDK_DATAENCRYPTION,
1);

anychat.SetBaseEvent(this);

anychat.SetDataEncDecEvent(this);

复制代码

2、在视频通话Activity实现“AnyChatDataEncDecEvent”接口,:

public int
OnAnyChatDataEncDec(int userid, int flags, byte[] lpBuf, int dwLen,
AnyChatOutParam outParam) {

if((flags &
AnyChatDataEncDecEvent.BRAC_DATAENCDEC_FLAGS_ENCMODE) != 0) {

if((flags & AnyChatDataEncDecEvent.BRAC_DATAENCDEC_FLAGS_AUDIO)
!= 0) { // 对音频数据进行加密处理

byte []
outarray = new byte [dwLen+100];

// 对lpBuf中的数据进行加密,并将加密之后的数据保存到outarray数组中

......

// 最后将加密之后的数据通过outParam返回给AnyChat内核

outParam.SetByteArray(outarray);

10.
} else if((flags &
AnyChatDataEncDecEvent.BRAC_DATAENCDEC_FLAGS_VIDEO) != 0) {
// 对视频数据进行加密处理

11.
......

12.
}

13.
} else if((flags &
AnyChatDataEncDecEvent.BRAC_DATAENCDEC_FLAGS_DECMODE) != 0) {

14.
if((flags &
AnyChatDataEncDecEvent.BRAC_DATAENCDEC_FLAGS_AUDIO) != 0) {
// 对音频数据进行解密处理

15.
......

16.
} else if((flags &
AnyChatDataEncDecEvent.BRAC_DATAENCDEC_FLAGS_VIDEO) != 0) {
// 对视频数据进行解密处理

17.
......

18.
}

19.
}

20.
return 0; // 返回0表示加密、解密成功,否则表示出错

21. }

复制代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: