agora.io WebSDK2.5.1의 새로운 기능
개요
2019/2/19에 agora.io WebSDK2.5.1이 출시되었습니다.
많은 기능 추가가 있었으므로 픽업하고 소개합니다.
공식 릴리스 노트 (영문)
통계 정보 취득 관련
1. 화상 통화 통계 수집
다음 코드로 통화 시간, 참가 인원수, 송수신 데이터량을 얻을 수 있습니다.
(Chrome 만 지원합니다)
function getSessionStats(){
client.getSessionStats((stats) => {
console.log(`Current Session Duration: ${stats.Duration}`);
console.log(`Current Session UserCount: ${stats.UserCount}`);
console.log(`Current Session SendBytes: ${stats.SendBytes}`);
console.log(`Current Session RecvBytes: ${stats.RecvBytes}`);
console.log(`Current Session SendBitrate: ${stats.SendBitrate}`);
console.log(`Current Session RecvBitrate: ${stats.RecvBitrate}`);
});
}
2. 네트워크 품질 정보 취득
아래의 코드로 Up/Down의 네트워크 품질을 6단계로 얻을 수 있습니다.
client.on('network-quality', function(stats) {
console.log('downlinkNetworkQuality', stats.downlinkNetworkQuality);
console.log('uplinkNetworkQuality', stats.uplinkNetworkQuality);
});
3. 리모트 거점의 오디오 정보 취득
원격 거점의 오디오 코덱, 패킷 손실, 대역 등을 얻을 수 있습니다.
client.getRemoteAudioStats((remoteAudioStatsMap) => {
for(var uid in remoteAudioStatsMap){
console.log(`Audio CodecType from ${uid}: ${remoteAudioStatsMap[uid].CodecType}`);
console.log(`Audio End2EndDelay from ${uid}: ${remoteAudioStatsMap[uid].End2EndDelay}`);
console.log(`Audio MuteState from ${uid}: ${remoteAudioStatsMap[uid].MuteState}`);
console.log(`Audio PacketLossRate from ${uid}: ${remoteAudioStatsMap[uid].PacketLossRate}`);
console.log(`Audio RecvBitrate from ${uid}: ${remoteAudioStatsMap[uid].RecvBitrate}`);
console.log(`Audio RecvLevel from ${uid}: ${remoteAudioStatsMap[uid].RecvLevel}`);
console.log(`Audio TotalFreezeTime from ${uid}: ${remoteAudioStatsMap[uid].TotalFreezeTime}`);
console.log(`Audio TotalPlayDuration from ${uid}: ${remoteAudioStatsMap[uid].TotalPlayDuration}`);
console.log(`Audio TransportDelay from ${uid}: ${remoteAudioStatsMap[uid].TransportDelay}`);
}
});
마찬가지로 Client.getRemoteVideoStats에서 원격 비디오 정보, Client.getLocalVideoStats에서 로컬 비디오 정보, Client.getTransportStats에서 네트워크 유형 정보 등을 얻을 수 있습니다.
영상/음성 수신 처리
지금까지는 영상과 음성의 취득에 대해서는 정리되어 있었습니다만, Client.subscribe에 option가 추가되어 영상만 취득, 음성만 취득이라고 하는 처리가 가능하게 되었습니다.
//映像のみ取得
client.subscribe(stream, {video: true, audio: false});
//音声のみ取得
client.subscribe(stream, {video: false, audio: true});
CDN 등으로부터의 외부 영상 취득
RTMP나 HLS 등, CDN으로부터 전달되고 있는 영상 스트림을 재생할 수 있습니다.
(Native에 이미 구현된 기능입니다)
var InjectStreamConfig = {
width: 0,
height: 0,
videoGop: 30,
videoFramerate: 15,
videoBitrate: 400,
audioSampleRate: 44100,
audioChannels: 1,
};
client.addInjectStreamUrl("rtmp://SERVER/APP/STREAM", InjectStreamConfig);
사용자 권한
게재자 또는 시청자의 권한을 부여할 수 있습니다. 시청자는 영상 전달이 불가능하며 수신만 가능합니다.
client.setClientRole('host', function() {
console.log("setHost success");
}, function(e) {
console.log("setHost failed", e);
});
Agora 서버와의 연결 상태 확인
Agora 서버와의 연결 상태를 확인할 수 있습니다.
client.getConnectionState()
Chrome70 이상 및 Safari의 자동 재생 정책 대책
Chrome 70+ 및 Safari에서는 오디오가 포함된 비디오 스트림이 사용자의 조작에 의해 트리거될 때까지 재생되지 않습니다. 사용자 조작 없이 영상을 재생하려면 음소거 플래그를 true로 설정하면 영상이 자동으로 무음으로 재생됩니다.
client.on('stream-subscribed', function (evt) {
var stream = evt.stream;
console.log("Subscribe remote stream successfully: " + stream.getId());
if ($('div#video #agora_remote'+stream.getId()).length === 0) {
$('div#video').append('<div id="agora_remote'+stream.getId()+'" style="float:left; width:810px;height:607px;display:inline-block;"></div>');
}
stream.play('agora_remote' + stream.getId(),{muted:true});
});
마지막으로
agora.io에 관한 문의는 이쪽으로부터
Reference
이 문제에 관하여(agora.io WebSDK2.5.1의 새로운 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/v-cube/items/1374079a0c52ff667102
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
function getSessionStats(){
client.getSessionStats((stats) => {
console.log(`Current Session Duration: ${stats.Duration}`);
console.log(`Current Session UserCount: ${stats.UserCount}`);
console.log(`Current Session SendBytes: ${stats.SendBytes}`);
console.log(`Current Session RecvBytes: ${stats.RecvBytes}`);
console.log(`Current Session SendBitrate: ${stats.SendBitrate}`);
console.log(`Current Session RecvBitrate: ${stats.RecvBitrate}`);
});
}
client.on('network-quality', function(stats) {
console.log('downlinkNetworkQuality', stats.downlinkNetworkQuality);
console.log('uplinkNetworkQuality', stats.uplinkNetworkQuality);
});
client.getRemoteAudioStats((remoteAudioStatsMap) => {
for(var uid in remoteAudioStatsMap){
console.log(`Audio CodecType from ${uid}: ${remoteAudioStatsMap[uid].CodecType}`);
console.log(`Audio End2EndDelay from ${uid}: ${remoteAudioStatsMap[uid].End2EndDelay}`);
console.log(`Audio MuteState from ${uid}: ${remoteAudioStatsMap[uid].MuteState}`);
console.log(`Audio PacketLossRate from ${uid}: ${remoteAudioStatsMap[uid].PacketLossRate}`);
console.log(`Audio RecvBitrate from ${uid}: ${remoteAudioStatsMap[uid].RecvBitrate}`);
console.log(`Audio RecvLevel from ${uid}: ${remoteAudioStatsMap[uid].RecvLevel}`);
console.log(`Audio TotalFreezeTime from ${uid}: ${remoteAudioStatsMap[uid].TotalFreezeTime}`);
console.log(`Audio TotalPlayDuration from ${uid}: ${remoteAudioStatsMap[uid].TotalPlayDuration}`);
console.log(`Audio TransportDelay from ${uid}: ${remoteAudioStatsMap[uid].TransportDelay}`);
}
});
//映像のみ取得
client.subscribe(stream, {video: true, audio: false});
//音声のみ取得
client.subscribe(stream, {video: false, audio: true});
var InjectStreamConfig = {
width: 0,
height: 0,
videoGop: 30,
videoFramerate: 15,
videoBitrate: 400,
audioSampleRate: 44100,
audioChannels: 1,
};
client.addInjectStreamUrl("rtmp://SERVER/APP/STREAM", InjectStreamConfig);
client.setClientRole('host', function() {
console.log("setHost success");
}, function(e) {
console.log("setHost failed", e);
});
client.getConnectionState()
client.on('stream-subscribed', function (evt) {
var stream = evt.stream;
console.log("Subscribe remote stream successfully: " + stream.getId());
if ($('div#video #agora_remote'+stream.getId()).length === 0) {
$('div#video').append('<div id="agora_remote'+stream.getId()+'" style="float:left; width:810px;height:607px;display:inline-block;"></div>');
}
stream.play('agora_remote' + stream.getId(),{muted:true});
});
agora.io에 관한 문의는 이쪽으로부터
Reference
이 문제에 관하여(agora.io WebSDK2.5.1의 새로운 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/v-cube/items/1374079a0c52ff667102텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)