音频加解密
音频加密和解密
加入房间后,便可以发布自己的音视频了。SDK 提供了一系列发布音视频的接口,App 可以根据实际需求选用合适的接口。如果发布的音频编码数据需要自定义加解密,需要先设置对应数据代理回调
/*!
* @abstract 编码数据回调的 delegate。
*
* @since v3.0.0
*/
@property (nonatomic, weak) id<QNRTCEngineEncodeDataDelegate> encodeDataDelegate;
加密音频数据
在 QNRTCEngineEncodeDataDelegate
中先根据自定义加密的方式,告知 SDK 加密后数据的最大空间大小
/*!
* @abstract 本地编码数据自定义加密最大长度的回调(目前只支持音频)
*
* @discussion 评估加密数据的最大值,必须设置
*
* @since v3.0.0
*/
- (size_t)RTCEngine:(QNRTCEngine *)engine
didSendDataLength:(size_t)frameDataLength
oftrackId:(NSString *)trackId;
然后在 QNRTCEngineEncodeDataDelegate
自定义加密
/*!
* @abstract 编码数据自定义加密的回调(目前只支持音频)
*
* @discussion 调用此函数,需要把对应的加密数据设置给 encryptedData,并且返回 encryptedData 的实际对应长度
*
* @since v3.0.0
*/
- (size_t)RTCEngine:(QNRTCEngine *)engine
didSendFrameData:(uint8_t *)frameData
frameDataLength:(size_t)frameDataLength
encryptedData:(uint8_t*)encryptedData
ofTrackId:(NSString *)trackId;
解密音频数据
在 QNRTCEngineEncodeDataDelegate
中先根据解密的方式,告知 SDK 解密后数据的最大空间大小
/*!
* @abstract 远端数据自定义解密最大长度的回调 (目前只支持音频)
*
* @discussion 评估解密数据的最大值,必须设置
*
* @since v3.0.0
*/
- (size_t)RTCEngine:(QNRTCEngine *)engine
didGetDataLength:(size_t)frameDataLength
oftrackId:(NSString *)trackId
ofUserId:(NSString *)userId;
然后在 QNRTCEngineEncodeDataDelegate
自定义解密
/*!
* @abstract 远端加密自定义数据解密的回调 (目前只支持音频)
*
* @discussion 调用此函数,需要把对应的解密数据设置给 decryptedData,并且返回 decryptedData 的实际对应长度
*
* @since v3.0.0
*/
- (size_t)RTCEngine:(QNRTCEngine *)engine
didGetFrameData:(uint8_t *)frameData
frameDataLength:(size_t)frameDataLength
decryptedData:(uint8_t*)decryptedData
ofTrackId:(NSString *)trackId
ofUserId:(NSString *)userId;
音频传输和接收自定义拓展数据
添加自定义拓展数据
在回调 QNRTCEngineEncodeDataDelegate
中放置自定义拓展数据,SDK 将携带该数据传输
/*!
* @abstract 编码数据自定义拓展的回调(目前只支持音频)
*
* @warning 最多 1000 个字节
*
* @since v3.0.0
*/
- (size_t)RTCEngine:(QNRTCEngine *)engine
didSendExtData:(uint8_t *)extData
extMaxDataLength:(size_t)extMaxDataLength
ofTrackId:(NSString *)trackId;
接收自定义数据
在回调 QNRTCEngineEncodeDataDelegate
使用 SDK 解析后的自定义拓展数据
/*!
* @abstract 远端用户自定义拓展数据的回调 (目前只支持音频)
*
* @since v3.0.0
*/
- (void)RTCEngine:(QNRTCEngine *)engine
didGetExtData:(uint8_t *)extData
extDataLength:(size_t)extDataLength
ofTrackId:(NSString *)trackId
ofUserId:(NSString *)userId;
注意事项
- 传输自定义数据,由七牛内部标示传输并在接收时解析,可以兼容服务转推和合流
- 音频加解密,由客户自定义加密传输并接收解密,不支持同时使用服务转推和合流