본문으로 건너뛰기
Version: 5.3

미디어 통계

WebPlanetKit은 최근의 미디어 통계를 얻을 수 있는 API를 제공합니다. 여기서는 이 API를 사용하는 방법과 각 미디어 스트림 유형에 대해 어떤 유형의 정보가 제공되는지 설명합니다.

미디어 통계 개요

getCurrentStats() 메서드를 사용하여 WebRTC 통계 중 일부 통계를 얻을 수 있습니다.

Tip

WebRTC 통계에 대한 자세한 내용은 Mozilla 문서의 RTCStatsReport를 참조하세요.

getCurrentStats() 메서드는 API 호출 당시의 통계를 나타내는 WebPlanetKitStatistics 객체를 반환합니다. WebPlanetKitStatistics 객체는 OutboundRtpStats(outbound-rtp 통계)와 InboundRtpStats(inbound-rtp 통계)로 구성됩니다.

  • outbound-rtp 통계에는 로컬 사용자의 오디오 및 비디오 통계가 포함됩니다.
  • inbound-rtp 통계에는 한 명 이상의 피어에 대한 오디오 및 비디오 통계가 포함됩니다.

미디어 통계 상세 설명

미디어 스트림 유형별로 다음과 같은 통계 정보가 제공됩니다.

Tip

아웃바운드 오디오 스트림

아웃바운드 오디오 스트림(outbound-rtp 오디오)의 경우 다음 정보가 제공됩니다. 각 속성의 링크에서 자세한 설명을 볼 수 있습니다.

속성설명
kind이 스트림의 미디어 유형
ssrc이 스트림의 식별자
packetsSent이 스트림에서 전송된 총 패킷 수
bytesSent이 스트림에서 전송된 총 바이트 수

아웃바운드 비디오 스트림

아웃바운드 비디오 스트림(outbound-rtp 비디오)의 경우 다음 정보가 제공됩니다. 각 속성의 링크에서 자세한 설명을 볼 수 있습니다.

속성설명
kind이 스트림의 미디어 유형
ssrc이 스트림의 식별자
rid그룹 통화에서 비디오 해상도 수준을 나타냅니다.
contentType이 스트림이 화면 공유용인 경우 이 속성의 값은 screenshare가 됩니다. 그렇지 않으면 이 속성은 존재하지 않습니다.
packetsSent이 스트림에서 전송된 총 패킷 수
bytesSent이 스트림에서 전송된 총 바이트 수
firCount이 스트림의 총 FIR(Full Intra Request) 패킷 수
pliCount이 스트림의 총 PLI(Picture Loss Indication) 패킷 수
nackCount이 스트림의 총 NACK(Negative Acknowledgement) 패킷 수
frameWidth비디오 프레임의 너비
frameHeight비디오 프레임의 높이
framesSent이 스트림에서 전송된 총 프레임 수
framesPerSecond마지막 1초 동안 인코딩된 프레임 수
targetBitrate이 스트림의 목표 비트레이트

인바운드 오디오 스트림

인바운드 오디오 스트림(inbound-rtp 오디오)의 경우 다음 정보가 제공됩니다. 각 속성의 링크에서 자세한 설명을 볼 수 있습니다.

속성설명
kind이 스트림의 미디어 유형
ssrc이 스트림의 식별자
packetsReceived이 스트림에서 수신된 총 패킷 수
bytesReceived이 스트림에서 수신된 총 바이트 수
packetsLost이 스트림에서 손실된 총 패킷 수
jitter수신된 패킷의 지연 변동

인바운드 비디오 스트림

인바운드 비디오 스트림(inbound-rtp 비디오)의 경우 다음 정보가 제공됩니다. 각 속성의 링크에서 자세한 설명을 볼 수 있습니다.

속성설명
kind이 스트림의 미디어 유형
ssrc이 스트림의 식별자
packetsReceived이 스트림에서 수신된 총 패킷 수
bytesReceived이 스트림에서 수신된 총 바이트 수
packetsLost이 스트림에서 손실된 총 패킷 수
jitter수신된 패킷의 지연 변동
firCount이 스트림의 총 FIR 패킷 수
pliCount이 스트림의 총 PLI 패킷 수
nackCount이 스트림의 총 NACK 패킷 수
frameWidth비디오 프레임의 너비
frameHeight비디오 프레임의 높이
framesReceived이 스트림에서 수신된 총 프레임 수
framesDecoded이 스트림에서 디코딩된 총 프레임 수
framesDropped이 스트림에서 드롭(drop)된 총 프레임 수
framesPerSecond마지막 1초 동안 디코딩된 프레임 수

통화 유형별 미디어 통계

이 섹션에서는 각 통화 유형에 대해 어떤 유형의 통계가 제공되는지 설명합니다.

1대1 통화

OutboundRtpStats에는 로컬 사용자의 오디오 전송에 대한 하나의 오디오 스트림 통계와 로컬 사용자의 비디오 전송에 대한 하나의 비디오 스트림 통계가 포함됩니다. 로컬 사용자가 화면 공유를 수행하는 경우 OutboundRtpStats에는 로컬 사용자의 화면 공유에 대한 또 다른 비디오 스트림 통계가 포함됩니다.

InboundRtpStats에는 피어에 대한 오디오 스트림 통계 한 개와 비디오 스트림 통계 여러 개가 포함됩니다.

그룹 통화

OutboundRtpStats에는 로컬 사용자의 오디오 전송에 대한 오디오 스트림 통계와 3개의 비디오 스트림 통계(해상도 수준별로 하나씩)가 포함되어 있습니다. 로컬 사용자가 화면 공유를 수행하는 경우 OutboundRtpStats에는 로컬 사용자의 화면 공유에 대한 또 다른 비디오 스트림 통계가 포함됩니다.

InboundRtpStats에는 방에 대한 오디오 스트림 통계 한 개와 각 피어에 대한 비디오 스트림 통계 여러 개가 포함되어 있습니다.

화면 공유 통계

화면 공유에 대한 통계는 OutboundRtpStats 또는 InboundRtpStats에 비디오 스트림 통계로 포함됩니다.

로컬 사용자의 화면 공유 통계

로컬 사용자의 화면 공유에 대한 통계는 OutboundRtpStats에 포함됩니다. 비디오 스트림 통계 중 화면 공유 통계만 contentType 속성을 가지며 그 값은 screenshare입니다.

따라서 로컬 사용자의 화면 공유에 대한 통계를 얻으려면 OutboundRtpStats 중에서 kind 속성이 video이고 contentType 속성이 screenshare인 개체를 구합니다.

planetKit.getCurrentStats().then((stats) => {
const outboundRtpStats = stats['outbound-rtp'];

outboundRtpStats.forEach((outboundRtpStat) => {
if (outboundRtpStat.kind === 'video' && outboundRtpStat.contentType === 'screenshare') {
// This outboundRtpStat is the statistics for the local user's screen share
}
});
})

피어의 화면 공유 통계

피어 한 명 이상의 화면 공유에 대한 통계가 InboundRtpStats에 포함됩니다.

1대1 통화에서는 피어가 특정되므로 통계를 구분할 수 있지만, 그룹 통화에서는 ssrc로 통계를 구분해야 합니다.

그룹 통화에서 각 피어는 PeerInfo라는 자체 상태 정보를 가지며, 여기에는 비디오 스트림 식별자인 vSsrc 및 화면 공유 식별자인 dSsrc와 같은 속성이 포함됩니다.

피어의 화면 공유에 대한 통계를 얻으려면 InboundRtpStats 중에서 kind 속성이 video이고 ssrc 속성이 피어의 dSsrc 값과 일치하는 개체를 구합니다.

다음 예제 코드는 그룹 통화에 대한 샘플 코드입니다.

planetKit.getCurrentStats().then((stats) => {
const inboundRtpStats = stats['inbound-rtp'];

const samplePeerInfo = planetKit.getPeerInfo('testPeerId');
inboundRtpStats.forEach((inboundRtpStat) => {
if (inboundRtpStat.kind === 'video' && inboundRtpStat.ssrc === samplePeerInfo.dSsrc) {
// This inboundRtpStat is the statistics for a peer's screen share
}
});
})

관련 API

미디어 통계와 관련된 API는 다음과 같습니다.