人声与歌曲同步介绍
因为本地人声采集的 jitter buffer、歌曲播放混音的 jitter buffer 以及声音播放到人耳到歌唱存在有一定的 GAP 的,所以演唱者完全对着歌词和 BGM 播放时候,在远端观众感觉 BGM 播放、人声、歌词是有一定的延迟的,合唱方案在 TRTC SDK 内部使用了使用低延迟的 AAudio 采集,具体只需要在进房后开启合唱模式与低延时模式。
具体代码实现
开启合唱模式
// 主实例(人声实例)开启合唱模式(调低缓冲区间、音频冗余保护)NSDictionary *jsonDic = @{@"api": @"enableChorus",@"params": @{@"enable": @(YES),@"audioSource": @(0)}};NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDic options:NSJSONWritingPrettyPrinted error:nil];NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];[trtcCloud callExperimentalAPI:jsonString];// 子实例(伴奏实例)开启合唱模式(调低缓冲区间、音频冗余保护)NSDictionary *jsonDic = @{@"api": @"enableChorus",@"params": @{@"enable": @(YES),@"audioSource": @(1)}};NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDic options:NSJSONWritingPrettyPrinted error:nil];NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];[subCloud callExperimentalAPI:jsonString];
说明:
开启合唱模式的实验性接口 enableChorus 的参数设置:
audioSource:0(人声)
audioSource:1(伴奏)
开启低延时模式(高性能音频 AAudio)
// 主实例(人声实例)开启高性能音频 AAudioNSDictionary *jsonDic = @{@"api": @"setLowLatencyModeEnabled",@"params": @{@"enable": @(1)}};NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDic options:NSJSONWritingPrettyPrinted error:nil];NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];[trtcCloud callExperimentalAPI:jsonString];// 子实例(伴奏实例)开启高性能音频 AAudioNSDictionary *jsonDic = @{@"api": @"setLowLatencyModeEnabled",@"params": @{@"enable": @(1)}};NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDic options:NSJSONWritingPrettyPrinted error:nil];NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];[subCloud callExperimentalAPI:jsonString];