동영상 문제 개요
영상 통화를 설정하려면 많은 구성 요소와 프로세스가 필요합니다. 단계에는 카메라 디바이스에서 동영상 스트림 획득, 브라우저 인코딩, 브라우저 디코딩, 동영상 렌더링 등이 포함됩니다. 이러한 단계 중 하나에 문제가 있으면 사용자에게 동영상 관련 문제가 발생할 수 있습니다. 예를 들어, 사용자는 동영상을 볼 수 없거나 동영상 품질이 좋지 않다고 불평할 수 있습니다. 따라서 동영상 문제를 디버깅하고 완화하려면 보낸 사람에서 받는 사람으로 동영상 콘텐츠가 어떻게 흐르는지 이해해야 합니다.
엔드투엔드 관점에서 영상 통화가 작동하는 방식
여기서는 Azure Communication Services 그룹 호출을 예로 사용합니다.
보낸 사람이 통화 중에 동영상을 시작하면 SDK는 브라우저 API를 통해 내부적으로 카메라 동영상 스트림을 검색합니다.
SDK는 신호 계층에서 서버와의 핸드셰이크를 완료한 후 동영상 스트림을 서버로 보내기 시작합니다.
브라우저는 전송을 위해 RTP(Real-time Transport Protocol) 계층에서 동영상 인코딩 및 패킷화를 수행합니다.
통화에 참여한 다른 참가자는 서버로부터 알림을 받아 보낸 사람으로부터 동영상 스트림을 사용할 수 있음을 나타냅니다.
애플리케이션은 동영상 스트림을 구독할지 여부를 결정할 수 있습니다.
애플리케이션이 서버에서 동영상 스트림을 구독하는 경우(예: createView
API 사용) 서버는 보낸 사람의 동영상 패킷을 받는 사람에게 전달합니다.
받는 사람의 브라우저는 수신 동영상을 디코딩하고 렌더링합니다.
영상 통화에 ACS 웹 통화 SDK를 사용하는 경우 SDK와 브라우저는 사용 가능한 대역폭에 따라 보낸 사람의 영상 품질을 조정할 수 있습니다. 조정에는 해상도, 초당 프레임 수 및 대상 비트 전송률의 변경이 포함될 수 있습니다. 또한 보낸 사람 측의 CPU 오버로드도 인코딩 대상 해상도에 대한 브라우저의 결정에 영향을 미칠 수 있습니다.
영상 통화의 일반적인 문제
전체 프로세스에는 보낸 사람의 카메라 디바이스와 같은 요소가 포함되어 있음을 알 수 있습니다. 보낸 사람과 받는 사람 쪽의 네트워크 상태도 중요한 역할을 합니다. 대역폭과 패킷 손실은 사용자가 인식하는 동영상 품질에 영향을 줄 수 있습니다.
다음은 몇 가지 일반적인 동영상 문제와 각 문제의 잠재적 원인을 나열합니다.
사용자는 원격 참가자의 동영상을 볼 수 없습니다.
- 사용자가 구독하는 경우 보낸 사람의 동영상을 볼 수 없습니다.
- 동영상을 구독하는 동안 원격 동영상을 사용할 수 없습니다.
- 애플리케이션은 동영상을 구독하는 동안 동영상 렌더러를 처리합니다.
- 최대 활성 동영상 구독 수에 도달했습니다.
- 동영상을 보낸 사람의 브라우저가 백그라운드에 있습니다.
- 동영상을 보낸 사람이 예기치 않게 통화를 끊었습니다.
- 동영상을 보낸 사람에게 네트워크 문제가 발생했습니다.
- 받는 사람에게 네트워크 문제가 발생했습니다.
- 프레임이 수신되었지만 디코딩되지 않았습니다.
사용자가 원격 참가자의 검은색 동영상만 볼 수 있습니다.
- 동영상을 보낸 사람의 브라우저가 백그라운드에 있습니다.
사용자의 동영상 품질이 좋지 않습니다.
- 동영상을 보낸 사람의 네트워크 상태가 좋지 않습니다.
- 받는 사람의 네트워크 상태가 좋지 않습니다.
- 동영상을 보낸 사람 또는 받는 사람의 환경에 큰 부하
- 받는 사람이 여러 개의 수신 화상 스트림을 구독합니다.