В мобильном приложении iOS по WebRTC¶
Описание¶
WCS предоставляет SDK для разработки клиентских приложений на платформе iOS
Схема работы¶
- Браузер соединяется с сервером по протоколу Websocket и отправляет команду
publishStream
. - Браузер захватывает микрофон и камеру и отправляет WebRTC поток на сервер.
- iOS-устройство устанавливает соединение по Websocket и отправляет команду
playStream
. - iOS-устройство получает WebRTC поток и воспроизводит этот поток в приложении.
Краткое руководство по тестированию¶
- Для теста используем:
- демо-сервер
demo.flashphoner.com
; - веб-приложение Two Way Streaming для публикации потока;
-
мобильное приложение iOS из AppStore для воспроизведения потока
-
Откройте веб-приложение Two Way Streaming. Нажмите
Connect
, затемPublish
. Скопируйте идентификатор потока:
-
Установите iOS приложение из AppStore на iPhone/ Запустите приложение. Введите URL WCS-сервера и имя опубликованного потока, нажмите
Play
. Начнется воспроизведение потока с сервера:
Последовательность выполнения операций¶
Ниже описана последовательность вызовов при использовании примера Player
-
Установка соединения с сервером
FPWCSApi2.createSession()
code
-
Получение от сервера события, подтверждающего успешное соединение
FPWCSApi2Session.on:kFPWCSSessionStatusEstablished callback
code
-
Запуск воспроизведения потока
FPWCSApi2Session.createStream()
code
- (FPWCSApi2Stream *)playStream { FPWCSApi2Session *session = [FPWCSApi2 getSessions][0]; FPWCSApi2StreamOptions *options = [[FPWCSApi2StreamOptions alloc] init]; options.name = _remoteStreamName.text; options.display = _remoteDisplay; NSError *error; FPWCSApi2Stream *stream = [session createStream:options error:nil]; if (!stream) { ... return nil; } }
-
Получение от сервера события, подтверждающего успешное воспроизведение потока
FPWCSApi2Stream.on:kFPWCSStreamStatusPlaying callback
code
-
Прием аудио-видео потока по WebRTC
-
Остановка воспроизведения потока
FPWCSApi2Session.disconnect()
code
if ([button.titleLabel.text isEqualToString:@"STOP"]) { if ([FPWCSApi2 getSessions].count) { FPWCSApi2Session *session = [FPWCSApi2 getSessions][0]; NSLog(@"Disconnect session with server %@", [session getServerUrl]); [session disconnect]; } else { NSLog(@"Nothing to disconnect"); [self onDisconnected]; } ... }
-
Получение от сервера события, подтверждающего остановку воспроизведения потока
FPWCSApi2Session.on:kFPWCSSessionStatusDisconnected callback
code