有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

人声与歌曲同步介绍

因为本地人声采集的 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)

// 主实例(人声实例)开启高性能音频 AAudio
NSDictionary *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];
// 子实例(伴奏实例)开启高性能音频 AAudio
NSDictionary *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];