Agora.io

GreenBean·2022년 10월 19일
0
post-thumbnail

Agora.io

Video Calling

  • Agora의 화상 통화를 사용하면 모든 애플리케이션에 맞춤형 실시간 비디오 경험을 추가 가능
    • Agora의 비디오 SDK로 활성화된 화상 통화를 사용하면 앱 내의 다양한 기능을 완벽하게 제어할 수 있음
    • 녹화 및 콘텐츠 조정과 같은 기능으로 SDK를 확장하거나 Extensions Marketplace 를 사용하여 배경 제거 ∙ 얼굴 필터 등을 빠르게 활성화할 수 있습니다.
  • 특징
    • 통화 녹음
      • 형식 ∙ 저장 경로 및 품질을 제어하여 클라우드 또는 온프레미스에서 화상 통화를 녹화
    • 화면 공유 및 협업
      • 사용자가 동시에 여러 장치에서 콘텐츠를 그리고 주석을 달고 공유할 수 있는 화면 공유 또는 대화형 화이트보드를 활성화
    • 여러 오디오 및 비디오 트랙
      • 다중 채널 캡처 카메라 및 마이크를 지원하여 단일 인스턴스에서 여러 오디오 및 비디오 트랙을 하나 이상의 채널에 게시함
    • 대규모 고품질 비디오
      • 까다로운 네트워크 조건에서도 수천 명의 동시 사용자에게 1:1 통화로 일관된 고품질 비디오를 제공
    • AI 기반 오디오 향상
      • 몰입형 오디오 경험을 제공하기 위해 3D 공간 오디오 ∙ AI 노이즈 억제 및 이득 제어로 고품질 오디오를 지원합니다.
    • 글로벌 커버리지
      • Agora의 소프트웨어 정의 실시간 네트워크(SD-RTN)는 200개 이상의 국가 및 지역에서 비디오 사용자를 지원

🍓 SDK quickstart

Understand the tech

  • 토큰 검색
    • 토큰은 컴퓨터에서 생성된 문자열로 앱이 채널에 가입할 때 사용자를 인증함
    • 테스트 또는 프로덕션 환경에서 앱은 보안 인프라의 서버에서 토큰을 검색
  • 채널 가입
    • 채널을 만들고 가입하는 메서드를 호출
    • 동일한 채널 이름을 전달하는 앱은 동일한 채널에 합류
  • 채널에서 비디오 및 오디오 보내기 및 받기
    • 모든 사용자는 채널의 모든 사용자로부터 비디오 및 오디오 스트림을 보내고 받음

Implement a client for Video Calling

  • 사용자가 앱을 열면 Agora Engine 을 초기화
  • 사용자가 버튼을 탭하면 앱이 채널에 참여하거나 채널을 떠남
  • 다른 사용자가 같은 채널에 참여하면 해당 사용자의 비디오와 오디오가 앱에서 렌더링 됨

Implement the channel logic

Start and stop your app

  • 이 구현에서는 앱을 열 때 Video SDK 를 시작
  • 앱 사용자는 Join 버튼을 사용하여 통화에 참여하고 나감
  • ① 뷰가 로드될 때 비디오 SDK 및 로컬 비디오 초기화
  • ② 채널을 떠나 앱에서 사용하는 모든 리소스를 정리

🥑 Secure authentication with tokens

  • 인증은 시스템에 액세스하기 전에 각 사용자의 ID를 확인하는 작업
  • Agora 는 사용자가 Agora SD-RTN 에 액세스하여 화상 통화에 참여하기 전에 디지털 토큰을 사용하여 사용자와 권한을 인증
  • 각 토큰은 제한된 기간 동안 유효하며 특정 채널에서만 작동
    • 예를 들어 AgoraChannel이라는 채널에 대해 생성된 토큰을 사용하여 AppTest 채널에 참여할 수 없음

Understand the tech

  • 인증 토큰은 최대 24시간 동안 유효한 동적 키
  • 요청 시 토큰 서버는 특정 채널에 가입하는 데 유효한 인증 토큰을 반환
  • 사용자가 앱에서 Agora 채널에 연결하려고 하면 앱이 보안 인프라의 토큰 서버에서 토큰을 검색
  • 그런 다음 앱은 인증을 위해 이 토큰을 Agora SD-RTN 으로 전송
  • Agora SD-RTN 은 토큰의 유효성을 검사하고 토큰에 저장된 사용자 및 프로젝트 정보를 읽음
  • 토큰에는 다음 정보가 포함되어 있음
    • Agora 프로젝트의 앱 ID
    • Agora 프로젝트의 앱 인증서
    • 채널 이름
    • 인증할 사용자의 사용자 ID (선택 사항)
    • 게시자 또는 구독자로서의 사용자 권한
    • 토큰이 만료될 때를 보여주는 Unix 타임스탬프

Implement the authentication workflow

  • ① 토큰 서버 생성 및 실행
  • ② 토큰 서버에서 토큰 검색 및 사용

Tip! Heroku 에 토큰 서버를 배포하는 방법

Heroku: 토큰 서버 배포 사이트

  • ① Heroku 에 토큰 서버를 배포
    • Github 에서 프로젝트 코드와 필요한 파일을 검색하고 Create New App 페이지로 이동
    • 해당 페이지에서 다음 정보를 입력
      • app-name: 소문자 ∙ 숫자 및 대시만 포함하는 토큰 서버의 이름
      • APP_CERTIFICATE: Agora 콘솔에서 획득
      • APP_ID: Agora 콘솔에서 얻은 앱 ID
  • Deploy app 를 클릭
    • Heroku 가 토큰 서버를 구성하고 구축
    • 'Your app was successfully deployed.' 라는 메시지가 표시

🫐 Token generators

  • 인증은 시스템에 액세스하기 전에 각 사용자의 ID를 확인하는 작업
  • 이 키 보안 수준은 Agora SD-RTN 에서 토큰 인증의 형태로 구현됨
    • Agora SD-RTN 은 디지털 토큰을 사용하여 화상 통화 에 액세스하기 전에 사용자와 권한을 인증
    • 토큰은 주어진 입력 세트에서 생성되는 동적 키
  • 모든 Agora 핵심 제품은 토큰 보안을 사용하여 보호됨

Understand the tech

  • 사용자가 Agora 채널에 연결을 시도하면 앱이 인증 시스템에서 토큰을 요청
  • 인증 시스템은 Agora 라이브러리를 사용하여 채널에 특정한 토큰을 생성한 다음 앱으로 보냄
  • 그런 다음 앱은 채널 가입 요청과 함께 이 토큰을 Agora SD-RTN 에 보냄
  • Agora SD-RTN 은 토큰의 유효성을 검사하고 사용자를 채널에 추가함

Implement token generation

  • Agora SD-RTN 은 토큰 생성을 위해 정수 사용자 ID를 사용
  • 원활한 커뮤니케이션을 위해 채널의 모든 사용자는 정수 uid 를 사용해야 함
  • uid 를 기반으로 하는 비디오 SDK 토큰에 대해 buildTokenWithUid 를 사용하여 토큰을 생성
  • 사용자 ID를 기반으로 토큰을 생성하려면 인증 토큰을 생성하려는 Python 소스 파일의 import 문 뒤에 다음을 추가
<
appId = "Your app Id"
appCertificate = "Your app certificate"
channelName = "Your channel name"
uid = 0  # The integer uid, required for an <Vg k="VSDK" /> token
expirationTimeInSeconds = 3600  # The time after which the token expires


def generate_token():
    #  Calculate the time expiry timestamp
    current_timestamp = int(time.time())
    privilege_expired_ts = current_timestamp + expirationTimeInSeconds

    print("UID token:")
    token = RtcTokenBuilder.buildTokenWithUid(appId, appCertificate, channelName, uid, Role_Publisher, privilege_expired_ts)
    print(token)

generate_token()

🍑 Secure channel encryption

  • 미디어 스트림 암호화는 채널에서 승인된 사용자만 서로를 보고 들을 수 있도록 하는데 이렇게 하면 잠재적인 도청자가 채널에서 공유되는 민감한 개인 정보에 액세스할 수 없음
  • 모든 사용 사례에 미디어 스트림 암호화가 필요한 것은 아니지만 화상 통화는 전송 중 데이터 기밀성을 보장하는 내장 암호화 방법을 제공

Understand the tech

  • 안전한 통신을 보장하기 위해 앱은 동일한 SSL Key 와 Salt 를 사용하여 채널의 데이터를 암호화하고 해독
  • Key 와 Salt 를 사용하여 암호화 구성을 만듬
  • Agora SD-RTN 은 암호화 구성을 사용하여 스트림을 암호화하고 원격 사용자에게 보냄
  • 원격 사용자가 암호화된 미디어 스트림을 수신하면 원격 앱은 동일한 Key 와 Salt 를 사용하여 미디어 스트림의 암호를 해독
  • 채널의 모든 사용자는 동일한 암호화 구성을 사용하여 채널에 참여하기 전에 agoraEngine 을 시작하고 암호화를 활성화해야 함
  • 올바른 구성이 없으면 채널 콘텐츠를 해독할 수 없음
  • 모범 사례는 인증 시스템이 새 Key 와 Salt 를 정기적으로 생성하는 것

Implement Agora media stream encryption

  • ① 필요한 변수 추가
  • ② 미디어 스트림 암호화 방법 추가
  • ③ 채널에 참여하기 전에 암호화 시작
profile
🌱 Backend-Dev | hwaya2828@gmail.com

0개의 댓글