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
expirationTimeInSeconds = 3600
def generate_token():
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
- ① 필요한 변수 추가
- ② 미디어 스트림 암호화 방법 추가
- ③ 채널에 참여하기 전에 암호화 시작