如何实现安全的音视频通话
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. }
复制代码
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. }
复制代码
相关文章推荐
- 在线教育网站如何更好的实现视频安全视频保护?
- 实时语音视频通话SDK如何实现听声辨位
- Netflix是如何实现视频安全下载离线播放的?(上)
- 实时语音视频通话SDK如何实现立体声(一)
- 如何实现Linux平台的视频通话
- 实时语音视频通话SDK如何实现立体声(二)
- 如何结合 CallKit 和 Agora SDK 实现视频 VoIP 通话应用
- 如何实现android实时视频通话功能
- Android 8.0 中如何实现视频通话的画中画模式的示例
- Sipdroid中的视频通话是如何实现的?
- 如何实现基于消息安全验证机制下的username身份验证过程
- 如何实现基于消息/传输安全验证机制下的windows身份验证过程、无任何验证
- 如何实现局域网共享与网上邻居安全
- 公司如何实现纵深化的网络安全防御
- 如何实现安全的FTP服务
- 如何通过组策略修改IE的安全级别,记录帐户密码,实现moss的单点登陆
- ASP.NET安全问题--ASP.NET安全架构--如何实现.NET安全
- ASP.NET安全问题--ASP.NET安全架构--如何实现.NET安
- C#中如何实现AVI视频的播放并且需要在播放视频的同时在视频上进行一些简单线条的绘制?
- 如何实现在高清液晶电视上播放PSP 2006(2000)视频