Chime SDK로 Zoom Lack 어플리케이션을 만들려고 하면 의외로 고전하고 있어요.

6602 단어 JavaScriptAWSChime

개요


이 글은 CA21 Advent Calendar 2020 Day16의 글입니다.
제목에서 보듯이 Chime SDK로 Zoom 스타일의 앱을 만들려면 매혹적인 부분이 많아 고전할 것이다.
이 문서에서는 Chime SDK를 소개합니다.
  • Chime SDK는
  • 구현 시 유용한 문서
  • 설치 시 빠져드는 점
  • 통화 어플리케이션 설치에 Chime SDK를 사용해야 하는지 여부
  • 아마존 Chime SDK 사용의 경과


    실습지에서 개발한 서비스에서 지금까지 Zoom을 사용한 통화 기능을 부분적으로 제어해야 한다는 요구가 발생했다.
    처음에는 Zoom SDK를 사용하려고 했지만 UI 변경이 어렵고 ZOOM에 의존하는 구조(예를 들어 사용할 때 Zoom이 필요한 계정)가 우려되어 UI 확장성이 높은 Chime SDK를 사용하기로 했습니다.

    아마존 Chime SDK 정보


    아마존 Chime SDK


    쉽게 말해'통화 응용에 필요한 뒷면 기초를 완전히 지원할 수 있는 개발 부속품'이다.
    보통 줌과 같은 통화 앱을 만들려면 WebRTC 등 특수 기술을 배워야 한다.또 인원수 증가 시 확장성 등을 고려한 서버 구축 등도 쉽지 않다.
    Chime SDK를 사용하면 이러한 번거로운 구조를 AWS에 완전히 의뢰할 수 있습니다.또한 반대로 UI에 대한 지원이 없기 때문에 자신의 생각대로 UI를 만들기 쉽다.

    Amazon Chime SDK를 사용하여 통화 애플리케이션 구축


    본 보도는 구축에 대해 상세하게 언급하지 않았지만, 아래의 보도는 매우 참고 가치가 있다
    amazon-chime-sdk-js(공식)
    사용 상황마다 샘플 코드가 적혀 있어 친절합니다.여기를 보면 대부분의 기능이 구축될 수 있다.
    아마존 Chime SDK를 해봤어요.
    일본어 기사에서 구축 방법에 대한 좋은 보도를 잘 해설했다.

    낙점


    Chime SDK가 이렇게 편리해 보이지만 실제로 개발에서 사용하면 상당히 큰 부분이 있습니다.이 보도는 자신이 빠진 문제점과 해결 방법을 소개한다.

    방의 보존 시간이 제한되어 있다


    개발 중'한 번 해야 할 방이 일정 시간 후에 사라지는 현상(접근 불가)'이 발생했다.
    지원을 문의했는데 다음 조건이 충족되면 만든 미팅룸이 자동으로 삭제됩니다.
    1. 誰もAudio接続しないまま5分が経過した場合
    2. 1人のみが接続した状態で30分以上が経過した場合
    3. 1人のみがscreen shareをした状態で30分以上が経過した場合
    4. meeting開始から24時間がたった場合
    
    즉, Chime SDK는 Zoom처럼 방을 배치할 수 없습니다.
    이 문제를 해결하기 위해서는 아래 그림과 같이 미리 다른 DB에 미팅 정보를 저장하고 시작할 때 처음으로 Chime로 룸 등을 만들어야 한다.

    SSL화되지 않으면 정상적으로 작동할 수 없다


    배포 후 다음 코드에서 운영 환경에서만 오류가 발생한 이벤트가 발생했습니다.
    //videoデバイスの設定
    this.videoInputDevices = await meetingSession.audioVideo.listVideoInputDevices();
    
    우리도 지원을 문의했는데 Chime SDK를 사용하는 응용 프로그램이 https 원형을 사용하는 환경이 아니면 잘 실행되지 않는다는 것을 발견했다.
    (상술한 코드는 내부 호출navigator.mediaDevices, http 프로토콜화에서 정의되지 않은 원인인 것 같다)
    그런데 왜 localhost가 움직일까...나에게 말해줘, 강인한 사람...!

    자신 이외의 참가자를 판단할 수 없는 "영상 종료" 와 "종료"


    Chime SDK에서 참가자의 화면 On Off를 검사하기 위해 아래의observer를 정의합니다.
    const observer = {
            videoTileDidUpdate: async (tileState) => {
              //videoをつけた時の処理
            },
            videoTileWasRemoved: (tileId) => {
              //videoを消した時の処理
            }
          }
    meetingSession.audioVideo.addObserver(observer)
    
    그러나 상기observer내videoTileWasRemoved는 이 참가자가 퇴장할 때나 영상을 닫을 때나 반응을 보인다.즉, Observer 단일체라면 동영상을 종료하고 닫는 상태를 구분할 수 없다는 것이다...(이 규격 때문인지 아마존 Chime의 공식 앱은 카메라를 끄는 UI를 준비하지 않았다)
    이 문제를 해결하기 위해서는 퇴출을 검출하기 위해 다음과 같은 코드를 써야 한다.
          //入退出処理
          const callback = async (presentAttendeeId, present) => {
            if (present) {
             //入室時処理
            } else {
              //退出処理
            }
          }
          meetingSession.audioVideo.realtimeSubscribeToAttendeeIdPresence(
            callback
          )
    
    이 코드는 참가자가 방에 들어갈 때만 구동되어 정의된 동작을 합니다.
    즉, Observer의 비디오 Tile Was Removed에 걸렸을 때 문답이 필요 없이 화면이 꺼진 것으로 구분할 수 있고, 검출된 코드가 걸렸을 때 종료로 구분할 수 있다.(화면 끄기 전용 옵서버도 가능하면 만들었으면 좋겠는데...)

    녹화 방법이 특수하다


    나는 이곳이 현재 가장 큰 Weak Point라고 생각하지만, Chime SDK 표준은 화면과 소리의 녹화 기능을 지원하지 않는다.
    대안으로 정부가 제공했기 때문에 이곳을 사용할 수 있다.
    그러나 이 녹화 API의 구조는'지정된 URL의 화면과 소리를 포착하는 것'이기 때문에 실제 통화 응용 프로그램과 다른 녹화용 페이지를 준비해야 한다.
    이 시위 행진에는 ec2 두 대t3.xlarge가 있었다.방치하면 지갑에 상당한 타격을 입기 때문에 README가 쓴 것처럼 사용 후 반드시 모두 삭제해야 한다.(나는 이곳에서 한 달 동안 눈치채지 못하고 수만 엔을 썼다

    결론 "통화 앱에서 아마존 치메를 사용하면 효과가 있나요?"


    많은 불평을 썼지만 기본적으로 노력만 하면 통화 응용 프로그램에 필요한 대부분의 기능을 설치할 수 있기 때문에 상당히 사용할 수 있는 SDK라고 느낀다.
    특히 다음 경우에는 Chime SDK를 사용할 수 있습니다.
  • 특수한 UI 통화 어플리케이션을 만들고 싶다(UI를 사용하고 싶은 사용자 정의 자유로운 SDK)
  • 백엔드의 규격과 규격은 원형으로 던질 수 있다(차라리 원형으로 던진다)
  • 다른 어플리케이션에 의존하지 않는 통화 어플리케이션을 만들고 싶다
  • 전염병의 영향으로 통화 앱 개발자의 수요가 높아질 오늘 이맘때 여러분도 꼭 한번 해보시겠어요?

    PR


    내정된 Cyber Agent는 22 졸업한 엔지니어 채용을 진행하고 있습니다!
    비디오 API 데모
    여러분의 응모를 기대합니다!

    좋은 웹페이지 즐겨찾기