Skip to end of metadata
Go to start of metadata

В сборке IOS SDK 2.6.32 добавлена возможность получать при проигрывании потока события от публикующей стороны. Таким образом можно определить, заглушено ли аудио или видео в потоке: если клиент использует функцию muteAduio() или muteVideo(), подписчикам отправляется специальное событие. Чтобы получить это событие при проигрывании потока, необходимо переопределить функцию FPWCSApi2Stream.onStreamEvent в Objective C приложении или WCSStream.onStreamEvent в Swift приложении.

Пример для Objective C code

    [_remoteStream onStreamEvent:^(FPWCSApi2StreamEvent *streamEvent){
        NSLog(@"No remote stream, %@", streamEvent.type);
        if ([streamEvent.type isEqual:[FPWCSApi2Model streamEventTypeToString:kFPWCSStreamEventTypeAudioMuted]]) {
            [_remoteControl onAudioMute:true];
        }
        if ([streamEvent.type isEqual:[FPWCSApi2Model streamEventTypeToString:kFPWCSStreamEventTypeAudioUnmuted]]) {
            [_remoteControl onAudioMute:false];
        }
        if ([streamEvent.type isEqual:[FPWCSApi2Model streamEventTypeToString:kFPWCSStreamEventTypeVideoMuted]]) {
            [_remoteControl onVideoMute:true];
        }
        if ([streamEvent.type isEqual:[FPWCSApi2Model streamEventTypeToString:kFPWCSStreamEventTypeVideoUnmuted]]) {
            [_remoteControl onVideoMute:false];
        }
    }];

Пример для Swift code

            playStream?.onStreamEvent({streamEvent in
                if (streamEvent?.type == FPWCSApi2Model.streamEventType(toString: .fpwcsStreamEventTypeAudioMuted)) {
                    self.remoteViewController?.onAudioMute(true);
                }
                if (streamEvent?.type == FPWCSApi2Model.streamEventType(toString: .fpwcsStreamEventTypeAudioUnmuted)) {
                    self.remoteViewController?.onAudioMute(false);
                }
                if (streamEvent?.type == FPWCSApi2Model.streamEventType(toString: .fpwcsStreamEventTypeVideoMuted)) {
                    self.remoteViewController?.onVideoMute(true);
                }
                if (streamEvent?.type == FPWCSApi2Model.streamEventType(toString: .fpwcsStreamEventTypeVideoUnmuted)) {
                    self.remoteViewController?.onVideoMute(false);
                }
            });

Получение состояния потока при подключении к потоку

При подключении подписчика к потоку, состояние потока можно получить в обработчике события StreamStatusPlaying, используя методы Stream.getAudioState() и Stream.getVideoState()

Пример для Objective C code

    [_remoteStream on:kFPWCSStreamStatusPlaying callback:^(FPWCSApi2Stream *stream){
        [self changeStreamStatus:stream];
        [self onStarted];
        _useLoudSpeaker.control.userInteractionEnabled = YES;
        [_remoteControl onAudioMute:[stream getAudioState].muted];
        [_remoteControl onVideoMute:[stream getVideoState].muted];
    }];

Пример для Swift code

    fileprivate func onPlaying(_ stream:FPWCSApi2Stream) {
        playButton.setTitle("STOP", for:.normal)
        changeViewState(loudSpeaker, true)
        changeViewState(playButton, true)
        self.remoteViewController!.onAudioMute(stream.getAudioState()?.muted ?? false)
        self.remoteViewController!.onVideoMute(stream.getVideoState()?.muted ?? false)
    }



  • No labels