Пример iOS-приложения для видеочата
Данный пример может использоваться для участия в видеочате для двух пользователей на Web Call Server и позволяет публиковать WebRTC-поток.
На скриншоте ниже представлен пример с комнатой, к которой присоединился другой участник.
Поля ввода, необходимые для установления соединения и присоединения к комнате
- 'WCS URL' - адрес WCS-сервера
- 'Login' - имя пользователя
- 'Room' - имя "комнаты" чата
На скриншоте вопроизводятся два видео
- нижнее - видео с камеры данного участника
- верхнее - видео от другого участника
Работа с кодом примера
Для разбора кода возьмем версию примера Video Chat, которая доступна для скачивания в сборке 2.5.2.
...
Code Block | ||||
---|---|---|---|---|
| ||||
[room onStateCallback:^(FPWCSApi2Room *room) {
NSDictionary *participants = [room getParticipants];
if ([participants count] >= 2) {
[room leave:nil];
_joinStatus.text = @"Room is full";
[self changeViewState:_joinButton enabled:YES];
return;
}
NSString *chatState = @"participants: ";
for (NSString* key in participants) {
FPWCSApi2RoomParticipant *participant = [participants valueForKey:key];
ParticipantView *pv = [freeViews pop];
[busyViews setValue:pv forKey:[participant getName]];
[participant play:pv.display];
pv.login.text = [participant getName];
chatState = [NSString stringWithFormat:@"%@%@, ", chatState, [participant getName]];
}
...
}];
|
5. Публикация видеопотока.
...
- вид для локального отображения публикуемого потока
- record определяет, необходимо ли записывать виедопоток видеопоток при публикации
Code Block | ||||
---|---|---|---|---|
| ||||
- (void)publishButton:(UIButton *)button { [self changeViewState:button enabled:NO]; if ([button.titleLabel.text isEqualToString:@"STOP"]) { [room unpublish]; } else { FPWCSApi2StreamOptions * options = [[FPWCSApi2StreamOptions alloc] init]; options.record = [_record.control isOn]; publishStream = [room publish:_localDisplay withOptions:options]; ... } } |
...