Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Описание

WCS предоставляет SDK для разработки клиентских приложений на платформе iOS

Схема работы

Image Removed

  1. Браузер соединяется с сервером по протоколу Websocket и отправляет команду publish.
  2. Браузер захватывает микрофон и камеру и отправляет WebRTC поток на сервер.
  3. iOS-устройство устанавливает соединение по Websocket и отправляет команду play.
  4. iOS-устройство получает WebRTC поток и воспроизводит этот поток в приложении.

Краткое руководство по тестированию

Воспроизведение видеопотока с помощью мобильного приложения iOS

1. Для теста используем:

  • демо-сервер demo.flashphoner.com;
  • веб-приложение Two Way Streaming для публикации потока;
  • мобильное приложение iOS для воспроизведения потока

2. Откройте веб-приложение Two Way Streaming. Нажмите Connect, затем Publish. Скопируйте идентификатор потока:

Image Removed

...

Image Removed

Последовательность выполнения операций (Call flow)

Ниже описана последовательность вызовов при использовании примера Player

ViewController.m

Image Removed

...

Flashphoner.createSession(); code

Code Block
languagecpp
themeRDark
    FPWCSApi2SessionOptions *options = [[FPWCSApi2SessionOptions alloc] init];
    options.urlServer = _connectUrl.text;
    options.appKey = @"defaultApp";
    NSError *error;
    FPWCSApi2Session *session = [FPWCSApi2 createSession:options error:&error];

2. Получение от сервера события, подтверждающего успешное соединение.

ConnectionStatusEvent ESTABLISHED code

Code Block
languagecpp
themeRDark
    [session on:kFPWCSSessionStatusEstablished callback:^(FPWCSApi2Session *rSession){
        [self changeConnectionStatus:[rSession getStatus]];
        [self onConnected:rSession];
    }];

...

session.createStream(); code

Code Block
languagecpp
themeRDark
- (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;
    }

...

StreamStatusEvent, статус PLAYING code

Code Block
languagecpp
themeRDark
    [stream on:kFPWCSStreamStatusPlaying callback:^(FPWCSApi2Stream *rStream){
        [self changeStreamStatus:rStream];
        [self onPlaying:rStream];
    }];

...

6. Остановка воспроизведения потока.

session.disconnect(); code

Code Block
languagecpp
themeRDark
    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];
        }
        ...
    }

7. Получение от сервера события, подтверждающего остановку воспроизведения потока.

ConnectionStatusEvent DISCONNECTED code

...

languagecpp
themeRDark

...

Include Page
WCS5RU:В мобильном приложении iOS по WebRTC
WCS5RU:В мобильном приложении iOS по WebRTC