agora.io VideoSDK 화면 공유 (ScreenSharing) 구현 예 (그 2)
12010 단어 아고라. 이오WebRTCScreenShare
agora.io SDK의 화면 공유 (ScreenSharing) 구현 예 (그 2)
현재, agora.io VideoSDK 화면 공유(ScreenSharing)에 대해서는, 다음의 데모가 준비되어 있습니다.
공유 The Screen
이 기사에서는 화면 공유(ScreenSharing)와 영상을 모두 표시하는 샘플로 개조합니다.
참조 참조 : Share the Screen
샘플
여기 를 이용해 주십시오.
(버전 3은 AgoraIO-Screen-Sharing-Web-WithCamera-v3,
버전 4는 AgoraIO-Screen-Sharing-Web-WithCamera-v4)
다음은 버전 4용 샘플에서 설명합니다.
기능 목록
※추가・변경 기능만 표시
[추가]
・카메라 디바이스 선택 풀다운 : 카메라 ID 취득
・마이크 디바이스 선택 풀다운: 마이크 ID 취득
・SCREENSHARING 버튼 :(join 후의) 화면 공유 다이얼로그 기동
[변경]
· Join 버튼 : 화면 공유의 Join 처리 추가
개발 환경
・agora.io VideoSDK(Web)
agora.io VideoSDK 영상과 화면 공유를 모두 표시하는 구현 예
구현 포인트
영상, 화면 공유(ScreenSharing)를 모두 표시하려면 영상, 화면 공유가 각각 join하고 트랙을 만드는 것이 포인트입니다.
다양한 장치 선택 추가
카메라 장치 선택, 마이크 장치 선택 풀다운을 추가합니다.
./index.html<div class="select-group mb-2">
<div class="audio mb-2">
<select name="audioSource" id="audioSource" class="form-select form-select-sm w-25" >
</select>
</div>
<div class="microphone mb-2">
<select name="videoSource" id="videoSource" class="form-select form-select-sm w-25">
</select>
</div>
</div>
버튼 추가
버튼을 추가합니다.
./index.html<button id="screensharing" type="button" class="btn btn-primary btn-sm">SCREENSHARING</button>
Join 버튼 클릭 시
영상용, 화면 공유용의 Join 처리를 각각 실시합니다.
./shareTheScreen.jsasync function join() {
await join_camera(); //映像用
await join_screen(); //画面共有用
}
화면 공유의 Join 처리
화면 공유에서는 createScreenVideoTrack()을 이용합니다.
./shareTheScreen.jsasync function join_screen() {
//省略
[ options.uid_s, localTracks.screenTrack] = await Promise.all([
// join the channel
client2.join(options.appid, options.channel, options.token || null),
AgoraRTC.createScreenVideoTrack({encoderConfig: {width: {max: 1280} , height: {max: 720}, frameRate: 30}},"disable")
]);
//省略
}
screensharing 버튼 클릭 시
Join 후에 화면 공유를 다시 실행할 때의 처리입니다.
./shareTheScreen.jsasync function screensharing() {
[ localTracks.screenTrack ] = await Promise.all([
AgoraRTC.createScreenVideoTrack({encoderConfig: {width: {max: 1280} , height: {max: 720}, frameRate: 30}},"disable")
]);
localTracks.screenTrack.on("track-ended", handleTrackEnded);
localTracks.screenTrack.play("local-player");
$("#local-player-name").text(`localVideo(${options.uid_screen})`);
// publish local tracks to channel
await client2.publish(localTracks.screenTrack);
console.log("publish success");
}
동작 확인
그럼 동작 확인해 보겠습니다.
1. 화면 시작
화면을 시작합니다. (index.html 클릭)
2. 각종 선택·입력
카메라, 마이크를 선택하고 appId, channel을 입력합니다.
3. Join
Join을 클릭합니다.
영상이 표시됩니다.
(주) 이미지의 영상은 실제 카메라 영상이 아닙니다.
4. 화면 공유 Join
그런 다음 화면 공유 대화 상자가 표시됩니다.
5. 화면 공유 다시 표시
(공유 정지 후) SCREENSHARING 버튼을 클릭하여 다시 화면 공유 대화 상자를 시작합니다.
화면 공유 대화상자가 표시됩니다.
6. 화면 공유 시작
공유 버튼을 클릭하여 공유를 시작합니다.
영상과 화면 공유를 표시할 수 있었습니다.
※참고 사이트
agora.io VideoSDK 화면 공유 (ScreenSharing) 구현 예 (그 1)
마지막으로
agora.io에 관한 문의는 이쪽으로부터
Reference
이 문제에 관하여(agora.io VideoSDK 화면 공유 (ScreenSharing) 구현 예 (그 2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/v-cube/items/44d6bfc6f8b4ca4c4152
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<div class="select-group mb-2">
<div class="audio mb-2">
<select name="audioSource" id="audioSource" class="form-select form-select-sm w-25" >
</select>
</div>
<div class="microphone mb-2">
<select name="videoSource" id="videoSource" class="form-select form-select-sm w-25">
</select>
</div>
</div>
<button id="screensharing" type="button" class="btn btn-primary btn-sm">SCREENSHARING</button>
async function join() {
await join_camera(); //映像用
await join_screen(); //画面共有用
}
async function join_screen() {
//省略
[ options.uid_s, localTracks.screenTrack] = await Promise.all([
// join the channel
client2.join(options.appid, options.channel, options.token || null),
AgoraRTC.createScreenVideoTrack({encoderConfig: {width: {max: 1280} , height: {max: 720}, frameRate: 30}},"disable")
]);
//省略
}
async function screensharing() {
[ localTracks.screenTrack ] = await Promise.all([
AgoraRTC.createScreenVideoTrack({encoderConfig: {width: {max: 1280} , height: {max: 720}, frameRate: 30}},"disable")
]);
localTracks.screenTrack.on("track-ended", handleTrackEnded);
localTracks.screenTrack.play("local-player");
$("#local-player-name").text(`localVideo(${options.uid_screen})`);
// publish local tracks to channel
await client2.publish(localTracks.screenTrack);
console.log("publish success");
}
agora.io에 관한 문의는 이쪽으로부터
Reference
이 문제에 관하여(agora.io VideoSDK 화면 공유 (ScreenSharing) 구현 예 (그 2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/v-cube/items/44d6bfc6f8b4ca4c4152텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)