중요
Azure Communication Services의 이 기능은 현재 미리 보기 상태입니다. 미리 보기의 기능은 공개적으로 사용할 수 있으며 모든 신규 및 기존 Microsoft 고객이 사용할 수 있습니다.
이 미리 보기 버전은 서비스 수준 계약 없이 제공되며, 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다.
자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.
개요
비디오 제약 조건 API를 사용하면 개발자가 비디오 통화 내에서 비디오 품질을 제어할 수 있습니다. 이 빠른 시작 가이드에서는 API를 사용하여 제약 조건을 설정하는 방법을 보여줍니다.
필수 조건
음성 통화 빠른 시작을 참조하여 음성 통화가 포함된 샘플 앱을 설정합니다.
클래스
이름 | 설명 |
---|---|
비디오 제약 조건 | 들어오는 비디오 제약 조건과 나가는 비디오 제약 조건을 모두 유지하는 데 사용됩니다. |
OutgoingVideoConstraints (출력 비디오 제약 조건) | 나가는 비디오 스트림에 대한 제약 조건(MaxWidth | MaxHeight | MaxFrameRate )을 지정하는 데 사용됩니다. |
수신 비디오 제약 조건 | 들어오는 비디오 스트림에 대한 제약 조건(MaxWidth | MaxHeight )을 지정하는 데 사용됩니다. |
비디오 제약 조건 사용
다음 섹션에서는 통화 시 다른 시간에 들어오거나 나가는 비디오 스트림에 대해 비디오 제약 조건을 설정하는 방법을 설명합니다.
통화를 시작하기 전에 비디오 제약 조건 설정
들어오는 비디오 스트림의 경우 IncomingVideoConstraints
에 IncomingVideoOptions
를 추가해야 합니다.
var IncomingVideoOptions = new IncomingVideoOptions()
{
Constraints = new IncomingVideoConstraints()
{
MaxWidth = /*value*/,
MaxHeight = /*value*/
},
// other options
// ...
}
나가는 비디오 스트림의 경우 OutgoingVideoConstraints
에 OutgoingVideoOptions
를 추가해야 합니다.
var OutgoingVideoOptions = new OutgoingVideoOptions()
{
Constraints = new OutgoingVideoConstraints()
{
MaxWidth = /*value*/,
MaxHeight = /*value*/,
MaxFrameRate = /*value*/
},
// other options
// ...
}
이 옵션은 통화를 시작/조인하는 데 사용되므로 제약 조건을 스트림에 자동으로 적용할 수 있습니다. 예시:
var joinCallOptions = new JoinCallOptions()
{
IncomingVideoOptions = new IncomingVideoOptions()
{
Constraints = new IncomingVideoConstraints()
{
MaxWidth = /*value*/,
MaxHeight = /*value*/
},
// other options
// ...
},
OutgoingVideoOptions = new OutgoingVideoOptions()
{
Constraints = new OutgoingVideoConstraints()
{
MaxWidth = /*value*/,
MaxHeight = /*value*/,
MaxFrameRate = /*value*/
},
// other options
// ...
}
};
await callAgent.JoinAsync(locator, joinCallOptions);
통화 중 비디오 제약 조건 설정
통화를 시작하기 전에 비디오 제약 조건을 설정하는 대신 통화 중에 비디오 제약 조건을 동적으로 조정할 수도 있습니다.
SetVideoConstraints
형식 클래스에서 Call
를 호출하고 제약 조건을 제공해야 합니다.
OutgoingVideoConstraints outgoingVideoConstraints = new OutgoingVideoConstraints()
{
outgoingVideoConstraints.MaxWidth = /*value*/ ;
outgoingVideoConstraints.MaxHeight = /*value*/ ;
outgoingVideoConstraints.MaxFrameRate = /*value*/ ;
};
IncomingVideoConstraints incomingVideoConstraints = new IncomingVideoConstraints()
{
incomingVideoConstraints.MaxWidth = /*value*/ ;
incomingVideoConstraints.MaxHeight = /*value*/ ;
};
VideoConstraints constraints = new VideoConstraints();
constraints.OutgoingVideoConstraints = outgoingVideoConstraints;
constraints.IncomingVideoConstraints = incomingVideoConstraints;
call.SetVideoConstraints(constraints);
이전에 설정한 비디오 제약 조건을 다시 설정/제거하려면 위의 패턴을 따르고 제약 조건 값으로 0
를 제공해야 합니다.
null
또는 IncomingVideoConstraints
에 OutgoingVideoConstraints
값을 제공해도 제약 조건이 다시 설정/제거되지 않으며 null
값이 있는 제약 조건은 무시됩니다.
제한 사항
주의사항
Video Constraints API를 사용할 때 이러한 제한 사항을 알고 있는지 확인하세요. 일부 제한 사항은 향후 릴리스에서 제거될 예정입니다.
현재 Video Constraints API에는 몇 가지 알려진 제한 사항이 있습니다.
제약 조건은 최대 제약 조건입니다. 즉, 가능한 제약 조건 값이 지정된 값 이하일 수 있습니다. 실제 값이 사용자가 지정한 값과 동일하게 유지된다는 보장은 없습니다.
사용자가 너무 작은 제약 조건 값을 설정하면 SDK는 지원되는 사용 가능한 가장 작은 값을 사용합니다.
통화 중에
OutgoingVideoConstraints
를 설정하는 경우 현재 진행 중인 비디오 스트림은 지정된 제약 조건을 자동으로 선택하지 않습니다. 제약 조건을 적용하려면 나가는 비디오를 중지했다가 다시 시작해야 합니다.현재
IncomingVideoConstraints
는 하드 제약 조건 대신 사용자가 선호하는 제약 조건입니다. 즉, 네트워크 및 하드웨어에 따라 수신된 실제 값이 여전히 제약 조건 집합을 초과할 수 있습니다.
미디어 통계
비디오 제약 조건을 적용한 후 비디오 품질을 평가하고 비교하기 위해 MediaStats API에 액세스하여 스트림의 비디오 해상도 및 비트 전송률 정보를 가져올 수 있습니다. 미디어 통계에는 지터, 패킷 손실, 왕복 시간 등 스트림과 관련된 다른 세분화된 통계도 포함됩니다.
중요
Azure Communication Services의 이 기능은 현재 미리 보기 상태입니다. 미리 보기의 기능은 공개적으로 사용할 수 있으며 모든 신규 및 기존 Microsoft 고객이 사용할 수 있습니다.
이 미리 보기 버전은 서비스 수준 계약 없이 제공되며, 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다.
자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.
개요
비디오 제약 조건 API를 사용하면 개발자가 비디오 통화 내에서 비디오 품질을 제어할 수 있습니다. 이 빠른 시작 가이드에서는 API를 사용하여 제약 조건을 설정하는 방법을 보여줍니다.
필수 조건
음성 통화 빠른 시작을 참조하여 음성 통화가 포함된 샘플 앱을 설정합니다.
클래스
이름 | 설명 |
---|---|
비디오 제약 조건 | 들어오는 비디오 제약 조건과 나가는 비디오 제약 조건을 모두 유지하는 데 사용됩니다. |
OutgoingVideoConstraints (출력 비디오 제약 조건) | 나가는 비디오 스트림에 대한 제약 조건(maxWidth | maxHeight | maxFrameRate )을 지정하는 데 사용됩니다. |
수신 비디오 제약 조건 | 들어오는 비디오 스트림에 대한 제약 조건(maxWidth | maxHeight )을 지정하는 데 사용됩니다. |
비디오 제약 조건 사용
다음 섹션에서는 통화 시 다른 시간에 들어오거나 나가는 비디오 스트림에 대해 비디오 제약 조건을 설정하는 방법을 설명합니다.
통화를 시작하기 전에 비디오 제약 조건 설정
들어오는 비디오 스트림의 경우 IncomingVideoConstraints
에 IncomingVideoOptions
를 추가해야 합니다.
IncomingVideoConstraints incomingVideoConstraints = new IncomingVideoConstraints();
incomingVideoConstraints.setMaxWidth(/*value*/);
incomingVideoConstraints.setMaxHeight(/*value*/);
// ...
IncomingVideoOptions incomingVideoOptions = new IncomingVideoOptions();
incomingVideoOptions.setConstraints(incomingVideoConstraints);
나가는 비디오 스트림의 경우 OutgoingVideoConstraints
에 OutgoingVideoOptions
를 추가해야 합니다.
OutgoingVideoConstraints outgoingVideoConstraints = new OutgoingVideoConstraints()
outgoingVideoConstraints.setMaxWidth(/*value*/);
outgoingVideoConstraints.setMaxHeight(/*value*/);
outgoingVideoConstraints.setMaxFrameRate(/*value*/);
// ...
OutgoingVideoOptions outgoingVideoOptions = new OutgoingVideoOptions();
outgoingVideoOptions.setConstraints(outgoingVideoConstraints);
이 옵션은 통화를 시작/조인하는 데 사용되므로 제약 조건을 스트림에 자동으로 적용할 수 있습니다. 예시:
JoinCallOptions joinCallOptions = new JoinCallOptions();
joinCallOptions.setIncomingVideoOptions(incomingVideoOptions);
joinCallOptions.setOutgoingVideoOptions(outgoingVideoOptions);
callAgent.Join(context, locator, joinCallOptions);
통화 중 비디오 제약 조건 설정
통화를 시작하기 전에 비디오 제약 조건을 설정하는 대신 통화 중에 비디오 제약 조건을 동적으로 조정할 수도 있습니다.
setVideoConstraints
형식 클래스에서 Call
를 호출하고 제약 조건을 제공해야 합니다.
OutgoingVideoConstraints outgoingVideoConstraints = new OutgoingVideoConstraints();
outgoingVideoConstraints.setMaxWidth(/*value*/);
outgoingVideoConstraints.setMaxHeight(/*value*/);
outgoingVideoConstraints.setMaxFrameRate(/*value*/);
IncomingVideoConstraints incomingVideoConstraints = new IncomingVideoConstraints();
incomingVideoConstraints.setMaxWidth(/*value*/);
incomingVideoConstraints.setMaxHeight(/*value*/);
VideoConstraints constraints = new VideoConstraints();
constraints.setOutgoingVideoConstraints(outgoingVideoConstraints);
constraints.setIncomingVideoConstraints(incomingVideoConstraints);
call.setVideoConstraints(constraints);
이전에 설정한 비디오 제약 조건을 다시 설정/제거하려면 위의 패턴을 따르고 제약 조건 값으로 0
를 제공해야 합니다.
null
또는 IncomingVideoConstraints
에 OutgoingVideoConstraints
값을 제공해도 제약 조건이 다시 설정/제거되지 않으며 null
값이 있는 제약 조건은 무시됩니다.
제한 사항
주의사항
Video Constraints API를 사용할 때 이러한 제한 사항을 알고 있는지 확인하세요. 일부 제한 사항은 향후 릴리스에서 제거될 예정입니다.
현재 Video Constraints API에는 몇 가지 알려진 제한 사항이 있습니다.
제약 조건은 최대 제약 조건입니다. 즉, 가능한 제약 조건 값이 지정된 값 이하일 수 있습니다. 실제 값이 사용자가 지정한 값과 동일하게 유지된다는 보장은 없습니다.
사용자가 너무 작은 제약 조건 값을 설정하면 SDK는 지원되는 사용 가능한 가장 작은 값을 사용합니다.
통화 중에
OutgoingVideoConstraints
를 설정하는 경우 현재 진행 중인 비디오 스트림은 지정된 제약 조건을 자동으로 선택하지 않습니다. 제약 조건을 적용하려면 나가는 비디오를 중지했다가 다시 시작해야 합니다.현재
IncomingVideoConstraints
는 하드 제약 조건 대신 사용자가 선호하는 제약 조건입니다. 즉, 네트워크 및 하드웨어에 따라 수신된 실제 값이 여전히 제약 조건 집합을 초과할 수 있습니다.
미디어 통계
비디오 제약 조건을 적용한 후 비디오 품질을 평가하고 비교하기 위해 MediaStats API에 액세스하여 스트림의 비디오 해상도 및 비트 전송률 정보를 가져올 수 있습니다. 미디어 통계에는 지터, 패킷 손실, 왕복 시간 등 스트림과 관련된 다른 세분화된 통계도 포함됩니다.
중요
Azure Communication Services의 이 기능은 현재 미리 보기 상태입니다. 미리 보기의 기능은 공개적으로 사용할 수 있으며 모든 신규 및 기존 Microsoft 고객이 사용할 수 있습니다.
이 미리 보기 버전은 서비스 수준 계약 없이 제공되며, 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다.
자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.
개요
비디오 제약 조건 API를 사용하면 개발자가 비디오 통화 내에서 비디오 품질을 제어할 수 있습니다. 이 빠른 시작 가이드에서는 API를 사용하여 제약 조건을 설정하는 방법을 보여줍니다.
필수 조건
음성 통화 빠른 시작을 참조하여 음성 통화가 포함된 샘플 앱을 설정합니다.
클래스
이름 | 설명 |
---|---|
비디오 제약 조건 | 들어오는 비디오 제약 조건과 나가는 비디오 제약 조건을 모두 유지하는 데 사용됩니다. |
OutgoingVideoConstraints (출력 비디오 제약 조건) | 나가는 비디오 스트림에 대한 제약 조건(maxWidth | maxHeight | maxFrameRate )을 지정하는 데 사용됩니다. |
수신 비디오 제약 조건 | 들어오는 비디오 스트림에 대한 제약 조건(maxWidth | maxHeight )을 지정하는 데 사용됩니다. |
비디오 제약 조건 사용
다음 섹션에서는 통화 시 다른 시간에 들어오거나 나가는 비디오 스트림에 대해 비디오 제약 조건을 설정하는 방법을 설명합니다.
통화를 시작하기 전에 비디오 제약 조건 설정
들어오는 비디오 스트림의 경우 IncomingVideoConstraints
에 IncomingVideoOptions
를 추가해야 합니다.
let incomingVideoConstraints = IncomingVideoConstraints()
incomingVideoConstraints.maxWidth = /*value*/
incomingVideoConstraints.maxHeight = /*value*/
// ...
let incomingVideoOptions = IncomingVideoOptions()
incomingVideoOptions.constraints = incomingVideoConstraints
나가는 비디오 스트림의 경우 OutgoingVideoConstraints
에 OutgoingVideoOptions
를 추가해야 합니다.
let outgoingVideoConstraints = OutgoingVideoConstraints()
outgoingVideoConstraints.maxWidth = /*value*/
outgoingVideoConstraints.maxHeight = /*value*/
outgoingVideoConstraint.maxFrameRate = /*value*/
// ...
let outgoingVideoOptions = OutgoingVideoOptions()
outgoingVideoOptions.constraints = outgoingVideoConstraints
이 옵션은 통화를 시작/조인하는 데 사용되므로 제약 조건을 스트림에 자동으로 적용할 수 있습니다. 예시:
let incomingVideoConstraints = IncomingVideoConstraints()
incomingVideoConstraints.maxWidth = /*value*/
incomingVideoConstraints.maxHeight = /*value*/
let incomingVideoOptions = IncomingVideoOptions()
incomingVideoOptions.constraints = incomingVideoConstraints
let outgoingVideoConstraints = OutgoingVideoConstraints()
outgoingVideoConstraints.maxWidth = /*value*/
outgoingVideoConstraints.maxHeight = /*value*/
outgoingVideoConstraint.maxFrameRate = /*value*/
let outgoingVideoOptions = OutgoingVideoOptions()
outgoingVideoOptions.constraints = outgoingVideoConstraints
let joinCallOptions = new JoinCallOptions()
joinCallOptions.incomingVideoOptions = incomingVideoOptions
joinCallOptions.outgoingVideoOptions = outgoingVideoOptions
callAgent.join(with: locator, joinCallOptions: joinCallOptions);
통화 중 비디오 제약 조건 설정
통화를 시작하기 전에 비디오 제약 조건을 설정하는 대신 통화 중에 비디오 제약 조건을 동적으로 조정할 수도 있습니다.
set(videoConstraints)
형식 클래스에서 Call
를 호출하고 제약 조건을 제공해야 합니다.
let outgoingVideoConstraints = OutgoingVideoConstraints()
outgoingVideoConstraints.maxWidth = /*value*/
outgoingVideoConstraints.maxHeight = /*value*/
outgoingVideoConstraint.maxFrameRate = /*value*/
let incomingVideoConstraints = IncomingVideoConstraints()
incomingVideoConstraints.maxWidth = /*value*/
incomingVideoConstraints.maxHeight = /*value*/
let videoConstraints = VideoConstraints()
videoConstraints.outgoingVideoConstraints = outgoingVideoConstraints
videoConstraints.incomingVideoConstraints = incomingVideoConstraints
call?.set(videoConstraints: videoConstraints)
이전에 설정한 비디오 제약 조건을 다시 설정/제거하려면 위의 패턴을 따르고 제약 조건 값으로 0
를 제공해야 합니다.
null
또는 IncomingVideoConstraints
에 OutgoingVideoConstraints
값을 제공해도 제약 조건이 다시 설정/제거되지 않으며 null
값이 있는 제약 조건은 무시됩니다.
제한 사항
주의사항
Video Constraints API를 사용할 때 이러한 제한 사항을 알고 있는지 확인하세요. 일부 제한 사항은 향후 릴리스에서 제거될 예정입니다.
현재 Video Constraints API에는 몇 가지 알려진 제한 사항이 있습니다.
제약 조건은 최대 제약 조건입니다. 즉, 가능한 제약 조건 값이 지정된 값 이하일 수 있습니다. 실제 값이 사용자가 지정한 값과 동일하게 유지된다는 보장은 없습니다.
사용자가 너무 작은 제약 조건 값을 설정하면 SDK는 지원되는 사용 가능한 가장 작은 값을 사용합니다.
통화 중에
OutgoingVideoConstraints
를 설정하는 경우 현재 진행 중인 비디오 스트림은 지정된 제약 조건을 자동으로 선택하지 않습니다. 제약 조건을 적용하려면 나가는 비디오를 중지했다가 다시 시작해야 합니다.현재
IncomingVideoConstraints
는 하드 제약 조건 대신 사용자가 선호하는 제약 조건입니다. 즉, 네트워크 및 하드웨어에 따라 수신된 실제 값이 여전히 제약 조건 집합을 초과할 수 있습니다.
미디어 통계
비디오 제약 조건을 적용한 후 비디오 품질을 평가하고 비교하기 위해 MediaStats API에 액세스하여 스트림의 비디오 해상도 및 비트 전송률 정보를 가져올 수 있습니다. 미디어 통계에는 지터, 패킷 손실, 왕복 시간 등 스트림과 관련된 다른 세분화된 통계도 포함됩니다.
통화에서 비디오 제약 조건을 설정하여 영상 통화의 해상도, 프레임 전송률 또는 비트 전송률에 따라 비디오 품질을 제어할 수 있습니다. 이 빠른 시작 가이드에서는 통화 시작 시 비디오 제약 조건을 설정하는 방법과 호출 개체에서 메서드를 사용하여 setConstraints
통화 중에 비디오 제약 조건을 동적으로 설정하는 방법을 보여 줍니다.
비디오 제약 조건 보내기
Azure Communication Services 웹 통화 SDK는 클라이언트가 보내는 최대 비디오 해상도, 프레임 속도, 비트 전송률 설정을 지원합니다. 보낸 사람 비디오 제약 조건은 데스크톱 브라우저(Chrome, Edge, Firefox)에서 지원되며 iOS Safari 모바일 브라우저 또는 Android Chrome 모바일 브라우저를 사용할 때도 지원됩니다.
지원되는 제약 조건 |
---|
들어오는 비디오: 해상도 나가는 비디오: 해상도, 프레임 전송률, 비트 전송률 |
통화 시작 시 비디오 제약 조건 설정 - 발신(보내기) 비디오
비디오 제약 조건 설정은 Call
인터페이스에서 구현됩니다. Video Constraints를 사용하려면 전화를 걸거나, 전화를 받거나, 통화에 참가할 때 CallOptions
내에서 제약 조건을 지정하면 됩니다.
localVideoStreams
에서 videoOptions
을(를) 지정해야 합니다.
오디오 전용 옵션으로 통화에 참가하고 나중에 카메라를 켜면 제약 조건이 작동하지 않습니다. 이 경우 setConstraints
인터페이스의 Call
메서드를 사용하여 비디오 제약 조건을 동적으로 설정할 수 있습니다.
const callOptions = {
videoOptions: {
localVideoStreams: [...],
constraints: {
send: {
bitrate: {
max: 575000
},
frameHeight: {
max: 240
},
frameRate: {
max: 20
}
}
}
},
audioOptions: {
muted: false
}
};
// make a call
this.callAgent.startCall(identitiesToCall, callOptions);
// join a group call
this.callAgent.join({ groupId }, callOptions);
// accept an incoming call
this.incomingCall.accept(callOptions)
비디오 제약 조건 유형은 다음과 같이 설명됩니다.
export declare interface VideoOptions {
localVideoStreams?: LocalVideoStream[];
//video constraint when call starts
constraints?: VideoConstraints;
};
export declare type VideoConstraints = {
send?: VideoSendConstraints;
};
export type VideoSendConstraints = {
/**
* Resolution constraint
*/
frameHeight?: MediaConstraintRange;
/**
* FrameRate constraint
*/
frameRate?: MediaConstraintRange;
/**
* Bitrate constraint
*/
bitrate?: MediaConstraintRange;
};
export declare type MediaConstraintRange = {
max?: number;
};
비디오 제약 조건을 설정할 때 SDK는 제약 조건 집합에 속하는 가장 가까운 값을 선택합니다(해상도, frameRate 및 비트 전송률 값이 설정된 최대 제약 조건 값을 초과하지 않도록 방지). 또한 해상도 제약 조건 값이 너무 작으면 SDK에서 사용 가능한 가장 작은 해상도를 선택합니다. 이 경우 선택한 해상도의 높이가 제약 조건 값보다 클 수 있습니다.
주의사항
모든 bitrate
, frameHeight
및 frameRate
에 대해 제약 조건 값은 max
제약 조건입니다. 즉, 호출의 실제 값은 지정된 값 이하일 수 있습니다.
전송된 비디오 해상도가 지정된 해상도로 유지된다는 보장은 없습니다.
모바일 디바이스가 세로 모드에 있을 때 frameHeight
의 VideoSendConstraints
는 의미가 다릅니다. 세로 모드에서 이 값은 디바이스의 짧은 면을 나타냅니다. 예를 들어, 세로 모드에서 1080(W) x 1920(H) 디바이스에 240으로 frameHeight.max
값을 지정하면, 제약 조건이 1080(W) 너비 쪽에 적용됩니다. 동일한 디바이스가 가로 모드(1920(W) x 1080(H))인 경우 제약 조건은 1080(H) 쪽에 있습니다.
MediaStats API를 사용하여 전송된 비디오 해상도를 추적하는 경우 통화 중에 전송된 해상도가 변경 될 수 있음을 알 수 있습니다. 이 값은 위아래로 진행될 수 있지만 제공하는 제약 조건 값보다 같거나 작아야 합니다. 이 해상도 변경은 예상되는 동작입니다. 브라우저에는 CPU 또는 네트워크 조건에 따라 전송된 해상도를 조정하는 몇 가지 성능 저하 규칙도 있습니다.
통화 중 비디오 제약 조건 설정 - 송출 중인(보내기) 비디오
setConstraints
개체의 Call
메서드를 사용하여 호출 중에 비디오 제약 조건을 설정할 수 있습니다.
// For eg, when you've started a call,
const currentCall = this.callAgent.startCall(identitiesToCall, callOptions);
// To set constraints during the call,
await currentCall.setConstraints({
video: {
send: {
frameHeight: {
max: 360
},
frameRate: {
max: 15
}
}
}
});
// To set only a particular constraint (the others will stay as what they were set before, if they were set)
await currentCall.setConstraints({
video: {
send: {
bitrate: {
max: 400000
}
}
}
});
// To unset any constraint,
await currentCall.setConstraints({
video: {
send: {
frameHeight: {
max: 0
}
}
}
});
주의사항
0
로 제약 조건 값을 설정하면 이전에 설정된 모든 제약 조건이 해제됩니다. 이 방법을 사용하여 제약 조건을 초기화하거나 제거할 수 있습니다.
비디오 제약 조건 받기
들어오는 스트림에 대한 비디오 품질을 관리하려면 예상 상한 및 하한 비트 전송률 경계가 있는 미리 정의된 비디오 해상도 목록인 Azure Communication Services 해상도 사다리를 이해해야 합니다. 클라이언트가 특정 해상도를 요청하면 WebJS 및 백 엔드 서버는 네트워크 조건과 디바이스 기능을 모두 고려하여 해상도 사다리를 참조하여 적절한 비디오 비트 전송률을 할당합니다.
비디오 렌더링 크기를 정의하는 것은 들어오는 비디오 스트림의 비트 전송률 및 프레임 속도를 제어하려는 개발자에게 중요한 단계입니다. 비디오 스트림의 초기 품질 및 해상도는 웹 페이지에 만들어지고 배치되는 렌더러의 크기에 따라 결정됩니다. 예를 들어 렌더러가 작은 경우 WebJS SDK는 더 작은 해상도를 요청합니다. 반대로 렌더러가 큰 경우 ACS SDK는 서버에서 가능한 최상의 해상도를 목표로 합니다. 이 프로세스를 통해 클라이언트의 요구 사항 및 기능에 따라 비디오 품질이 최적화됩니다. 클라이언트가 특정 해상도를 요청하면 서버는 네트워크 조건과 디바이스 기능을 모두 고려하여 적절한 비디오 비트 전송률을 할당하기 위해 확인 사다리를 참조합니다.
해상도 사다리 테이블은 WebJS 호출 SDK 해상도 사다리가 다양한 해상도에 대해 예상되는 들어오는 비디오 비트 전송률로 구성되는 것을 제공합니다. 이러한 세부 정보는 개발자가 특정 들어오는 비디오 스트림에서 사용하는 해상도, 비트 속도 및 프레임 속도와 대략적인 대역폭 간의 관계를 이해하는 데 도움이 됩니다. 예를 들어, 클라이언트가 대략적인 최소 비트레이트 1 MBPS 및 최대 2.5 MBPS를 사용하여 1280x720 해상도로 30 FPS에서 스트리밍을 합니다.
Azure Communication Services WebJS Calling SDK는 일관된 통신 환경을 보장하기 위해 사용 가능한 대역폭에 따라 비디오 크기를 조정합니다. WebJS Calling SDK는 네트워크 상태를 모니터링하는 알고리즘에 따라 비디오 크기를 조정합니다. 네트워크 대역폭이 충분하면 SDK는 웹 페이지에 정의된 렌더링 크기에 따라 비디오 해상도를 최대 수준으로 높입니다. 반대로 대역폭이 제한되면 비디오 해상도를 줄여 버퍼링을 방지하고 안정적인 연결을 유지합니다.
다음 표에서는 해당 해상도로 전달될 각 해상도 및 관련 FPS에 대한 해상도 사다리 및 예상 비트 전송률을 제공합니다.
높이 | 너비 | 프레임률 (FPS) | 최소 비트 전송률(MBps) | 최대 비트 전송률(MBps) |
---|---|---|---|---|
1080 | 1920 | 30 | 1.75 | 10 |
720 | 1280 | 30 | 1 | 2.5 |
540 | 960 | 30 | 0.5 | 1.125 |
360 | 640 | 30 | 0.4 | 0.57 |
240 | 426 | 15 | 0.125 | 0.5 |
240 | 320 | 15 | 0.2 | 0.175 |
미디어 통계를 사용하여 비디오 제약 조건의 영향 파악하기
비디오 제약 조건을 적용한 후 비디오 품질을 평가하고 비교하려면 MediaStats API에 액세스하여 전송 스트림의 비디오 해상도 및 비트 전송률 정보를 가져올 수 있습니다. 미디어 통계에는 지터, 패킷 손실, 왕복 시간 등 스트림과 관련된 다른 세분화된 통계도 포함됩니다.
const mediaStatsFeature = call.feature(Features.MediaStats);
const mediaStatsCollector = mediaStatsFeature.createCollector();
mediaStatsCollector.on('sampleReported', (sample: SDK.MediaStatsReportSample) => {
// process the stats for the call.
console.log(sample);
});
다음 단계
자세한 내용은 다음 문서를 참조하세요.
- Video Constraints 개념 문서에 대해 알아보기
- 통화 SDK 기능에 대해 알아보기