* 开始演唱。在歌词/歌曲下载完成,收到开始演唱广播后执行。
* @param filePath 歌曲的文件路径
- (void)startStartSinging:(NSString *)filePath {
ByteRTCMediaPlayer *mediaPlayer = [self.rtcEngineKit getMediaPlayer:0];
ByteRTCMediaPlayerConfig *config = [[ByteRTCMediaPlayerConfig alloc]init];
config.type = ByteRTCAudioMixingTypePlayoutAndPublish;
[mediaPlayer open:filePath config:config];
// 设置歌曲进度回调,100ms 间隔回调一次
[mediaPlayer setProgressInterval:100];
* @param engine ByteRTCVideo 对象
* @param progress 歌曲播放进度,单位为毫秒
- (void)rtcEngine:(ByteRTCVideo *)engine onAudioMixingPlayingProgress:(NSInteger)mixId
progress:(int64_t)progress {
NSString *millisecondStr = [NSString stringWithFormat:@"%ld", (long)(progress)];
[self reloadLocalLyrics:millisecondStr];
NSData *data = [millisecondStr dataUsingEncoding:NSUTF8StringEncoding];
ByteRTCStreamSycnInfoConfig *config = [[ByteRTCStreamSycnInfoConfig alloc] init];
config.streamIndex = ByteRTCStreamIndexMain;
[self.rtcEngineKit sendStreamSyncInfo:data config:config];
* @param remoteStreamKey 远端流信息
* @param streamType 媒体流类型
- (void)rtcEngine:(ByteRTCVideo *)engine onStreamSyncInfoReceived:(ByteRTCRemoteStreamKey *)remoteStreamKey
streamType:(ByteRTCSyncInfoStreamType)streamType
NSString *millisecondStr = [[NSString alloc] initWithBytes:data.bytes
encoding:NSUTF8StringEncoding];
[self reloadLocalLyrics:millisecondStr];
-(void)onMediaPlayerStateChanged:(int)playerId state:(ByteRTCPlayerState)state error:(ByteRTCPlayerError)error {
if (state == ByteRTCPlayerStateFinished) {