Video Room

videoroom은 영상 회의 기능을 인터넷을 이용한 애플리케이션으로 구현한 것입니다. Omnitalk SDK를 사용하여 회의실(룸) 생성 및 참여, 이벤트 메시지에 대응하는 것으로 음성 회의 기능을 간단히 구현할 수 있습니다.

Step 1. 세션 생성

Omnitalk SDK의 초기화를 제외한 모든 API를 사용하기 위해서는 우선적으로 createSession()을 호출하여 세션을 생성해야 합니다. createSession()의 파라미터인 user_id는 사용자를 구분하기 위한 고유한 id이며 audiocall 발신을 위한 offerCall() 호출에 사용됩니다. user_id는 Optional 이며, 생략시 Omnitalk 서버에서 임의의 id를 부여합니다.

await sdk.createSession(user_id);

Step 2. 회의실 생성 / 조회

createRoom() API 를 사용하여 사람들이 입장 할 수 있는 회의실(룸)을 생성합니다. createRoom()의 필수 파라미터은 room_type은 Omnitalk SDK에서 enum type으로 제공합니다. 영상 회의의 경우는 VIDEO_ROOM 을 사용하시면 됩니다. createRoom() API 리턴 객체에 room_id 로 회의실에 참여할 수 있습니다.

await sdk.createRoom(VIDEOROOM_TYPE.VIDEO_ROOM, "subject", "123456")

이미 다른 사용자가 회의실을 생성 했다면 roomList() API 를 사용하여 현재 생성된 회의실 목록을 조회할 수 있습니다. 음성 회의실 목록만 조회하고 싶은 경우 room_type 을 VIDEO_ROOM 으로 전달하시면 됩니다. 조회한 목록 결과에 room_id 로 회의실에 참여할 수 있습니다.

await sdk.roomList(VIDEOROOM_TYPE.VIDEO_ROOM);

Step 3. 회의실 참여

joinRoom() API 를 사용하여 회의실에 참여할 수 있습니다. 회의실에 참여하게 되면 별도의 작업 없이 참여자들과 음성 회의를 할 수 있게 되며, 영상 송출은 다음 스텝을 참고 바랍니다. 회의실에 관련된 이벤트 메세지를 수신할 수 있습니다. 영상 회의에서 수신 가능한 이벤트는 아래와 같습니다. 자세한 내용은 Event Message 를 참조 바랍니다.

  • CONNECTED_EVENT - 새로운 참가자 입장했을 때

  • BROADCASTING_EVENT - 다른 참가자가 영상을 송출했을 때

  • LEAVE_EVENT - 다른 참가자가 퇴장 했을 때

  • MUTE_EVENT - 다른 참가자가 mute 했을 때

  • UNMUTE_EVENT - 다른 참가자가 unmute 했을 때

  • SCREEN_SHARE_EVENT - 화면 공유 발생 이벤트

  • SCREEN_UNSHARE_EVENT - 화면 공유 종료 이벤트

  • MESSAGE_EVENT - 채팅 메세지 수신 이벤트, 회의실 입장시 채팅 기능을 사용할 수 있는 상태가 됩니다. 채팅기능 사용법은 Chatting 문서를 참조 바랍니다.

await sdk.joinRoom(room_id);

Step 4. 영상 송출

카메라 영상

publish() API 를 사용하여 카메라 영상을 송출할 수 있습니다. 송출되는 영상을 재생하기 위해서는 video 태그가 필요합니다. Omnitalk SDK는 video 태그의 id를 기반으로 영상을 재생합니다. 파라미터로 사용자 지정 tag id를 전달할 수 있습니다. 사용자 지정 tag id를 전달하지 않으면 옴니톡 SDK에서 발급한 Tag Rule에 따라서 video 태그를 생성하시면 됩니다.

publish를 하게 되면 다른 참가자들은 BROADCASTING_EVENT 이벤트 메세지를 받게 됩니다. 방송 구독은 다음 스텝을 참고 바랍니다.

await sdk.publish(tag_id);

화면 공유

screenShare() API 를 사용하여 사용자의 화면을 공유할 수 있습니다. 송출되는 영상을 재생하기 위해서는 video 태그가 필요합니다. Omnitalk SDK는 video 태그의 id를 기반으로 영상을 재생합니다. 파라미터로 사용자 지정 tag id를 전달할 수 있습니다. 사용자 지정 tag id를 전달하지 않으면 옴니톡 SDK에서 발급한 Tag Rule에 따라서 video 태그를 생성하시면 됩니다.

screenShare를 하게 되면 다른 참가자들은 SCREEN_SHARE_EVENT 이벤트 메세지를 받게 됩니다. 방송 구독은 다음 스텝을 참고 바랍니다.

await sdk.screenShare(tag_id);

화면 공유 취소

screenUnshare를 하게 되면 화면 공유를 중단합니다. 다른 참가자들은 SCREEN_UNSHARE_EVENT 이벤트 메세지를 받게 됩니다.

await sdk.screenUnshare();

Step 5. 영상 구독

subscribe() API 를 사용하여 송출된 영상을 구독할 수 있습니다. 파라미터에 영상 송출자의 session 을 전달하시면 됩니다. session은 partiList() API 또는 BROADCASTING_EVENT 또는 SCREEN_SHARE_EVENT 에서 확인 하실 수 있습니다.

송출되는 영상을 재생하기 위해서는 video 태그가 필요합니다. Omnitalk SDK는 video 태그의 id를 기반으로 영상을 재생합니다. 파라미터로 사용자 지정 tag id를 전달할 수 있습니다. 사용자 지정 tag id를 전달하지 않으면 옴니톡 SDK에서 발급한 Tag Rule에 따라서 video 태그를 생성하시면 됩니다.

await sdk.subscribe(publisher_session);

영상 구독 취소

unsubscribe() API 를 사용하여 구독중이던 영상을 구독 취소 할 수 있습니다.

await sdk.unsubscribe(publisher_session);

Step 6. 회의실 퇴장

leave() API를 통해서 회의실에서 퇴장 할 수 있습니다. 파라미터에 session을 전달하지 않으면 자신의 방송을 종료하고 퇴장하게 됩니다. session를 전달하면 해당 session을 가진 사용자가 퇴장 하게 됩니다. 해당 상황은 수신 거절이나 강제 퇴장 등의 기능으로 활용할 수 있습니다.

await sdk.leave();

목록 조회

참여자 목록 조회

partiList() API 를 사용하여 입장한 회의실에 참여한 사용자 목록을 조회할 수 있습니다.

  • 추가 예정 - partiList의 결과에 다른 참가자의 mute 여부를 알 수 있습니다.

방송 목록 조회

publishList() API 를 사용하여 입장한 회의실에 송출중인 방송 목록을 조회할 수 있습니다.

화면공유 정보 조회

screenList() API 를 사용하여 입장한 회의실에 송출중인 화면 공유 정보를 조회할 수 있습니다.

비디오 장치 제어

mute/unmute

영상 송출을 중단할 수 있도록 API를 제공합니다. 사용법과 자세한 내용은 API Reference의 mute/unmute 부분을 참조 바랍니다. mute/unmute API의 파라미터인 track type은 Omnitalk SDK에서 enum type으로 제공합니다. 예시는 아래와 같습니다.

await sdk.setMute(TRACK_TYPE.VIDEO);

입력 장치 변경

전화 연결 전, 또는 영상 전화 통화중에 입력(카메라) 장치를 변경할 수 있도록 API를 제공합니다.

  1. 우선, 사용 가능한 입력 장치 목록을 조회할 수 있는 getDeviceList() 를 통해서 사용하고자 하는 장치의 deviceId를 획득합니다.

  2. setVideoDevice() 파라미터로 deviceId를 전달하여 입력 장치를 변경할 수 있습니다.

오디오 장치 제어

mute/unmute

전화 통화중에 음소거를 할 수 있도록 API를 제공합니다. 사용법과 자세한 내용은 API Reference의 mute/unmute 부분을 참조 바랍니다. mute/unmute API의 파라미터인 track type은 Omnitalk SDK에서 enum type으로 제공합니다. 예시는 아래와 같습니다.

await sdk.setMute(TRACK_TYPE.AUDIO);

입력 장치 변경

전화 연결 전, 또는 전화 통화중에 입력(마이크) 장치를 변경할 수 있도록 API를 제공합니다.

  1. 우선, 사용 가능한 입력 장치 목록을 조회할 수 있는 getDeviceList() 를 통해서 사용하고자 하는 장치의 deviceId를 획득합니다.

  2. setAudioDevice() 파라미터로 deviceId를 전달하여 입력 장치를 변경할 수 있습니다.

룸 삭제

현재 참여중이지 않은 회의실은 destroyRoom() API 를 사용하여 회의실을 삭제할 수 있습니다.

Last updated