ํ๋ฉด ๊ณต์ ๋ฅผ ์ถ๊ฐํ ๊ณํ์ด ์์ต๋๊น?
์: https://www.webrtc-experiment.com/Pluginfree-Screen-Sharing/
PeerJS๋ peer.call
ํธ์ถํ ๋ ์์์ ์คํธ๋ฆผ์ ๋ฐ์ต๋๋ค. ํ๋ฉด์
๊ณต์ ํ๋ ค๋ฉด getUserMedia์์ ํ๋ฉด ๊ณต์ ์คํธ๋ฆผ์ ๊ฐ์ ธ์ค๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์น์บ ๋น๋์ค ์คํธ๋ฆผ ๋์ . PeerJS๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๊ตฌ๋ณํ์ง ์์ต๋๋ค.
๋ค๋ฅธ ํผ์ด๋ฅผ ํธ์ถํฉ๋๋ค. ํ๋ฉด ๊ณต์ ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ฌ์ดํธ๊ฐ HTTPS์ ์์ด์ผ ํฉ๋๋ค.
๋ฐ๋ผ์ ์ด๋ฏธ ์๋ํด์ผ ํฉ๋๋ค.
์๋ฆญ
2013๋ 10์ 24์ผ ๋ชฉ์์ผ ์ค์ 8์ 52๋ถ์ kenianbei [email protected]์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
ํ๋ฉด ๊ณต์ ๋ฅผ ์ถ๊ฐํ ๊ณํ์ด ์์ต๋๊น?
์: https://www.webrtc-experiment.com/Pluginfree-Screen-Sharing/
โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ Gi tHubhttps://github.com/peers/peerjs/issues/96์์ ํ์ธํ์ธ์.
.
510-691-3951
http://ericzhang.com
์๋ํด ๋ณด์๊ณ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋ฌธ์ ๋ฅผ ๋ค์ ์ด์ด ์ฃผ์๋ฉด ์์ ํ๊ฒ ์ต๋๋ค.
2013๋ 10์ 25์ผ ๊ธ์์ผ ์ค์ 10์ 41๋ถ, Eric Zhang ์ ๋ง. [email protected] ์ ๋ค์
PeerJS๋
peer.call
ํธ์ถํ ๋ ์์์ ์คํธ๋ฆผ์ ๋ฐ์ต๋๋ค. ํ๋ฉด์
๊ณต์ ํ๋ ค๋ฉด getUserMedia์์ ํ๋ฉด ๊ณต์ ์คํธ๋ฆผ์ ๊ฐ์ ธ์ค๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์น์บ ๋น๋์ค ์คํธ๋ฆผ ๋์ . PeerJS๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๊ตฌ๋ณํ์ง ์์ต๋๋ค.
๋ค๋ฅธ ํผ์ด๋ฅผ ํธ์ถํฉ๋๋ค. ํ๋ฉด ๊ณต์ ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ฌ์ดํธ๊ฐ HTTPS์ ์์ด์ผ ํฉ๋๋ค.๋ฐ๋ผ์ ์ด๋ฏธ ์๋ํด์ผ ํฉ๋๋ค.
์๋ฆญ
2013๋ 10์ 24์ผ ๋ชฉ์์ผ ์ค์ 8์ 52๋ถ, kenianbei [email protected] ์์ฑ :
ํ๋ฉด ๊ณต์ ๋ฅผ ์ถ๊ฐํ ๊ณํ์ด ์์ต๋๊น?
์: https://www.webrtc-experiment.com/Pluginfree-Screen-Sharing/
โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ Gi tHubhttps://github.com/peers/peerjs/issues/96์์ ํ์ธํ์ธ์.
.510-691-3951
http://ericzhang.com
510-691-3951
http://ericzhang.com
ํ๋ฉด ๊ณต์ ๊ฐ ์๋ํ๋ ๋ฐฉ์์ ๋ํ ์ฐ๊ตฌ๋ฅผ ์ํํ์ง ์์์ผ๋ฏ๋ก ํ ์คํธํ๊ฒ ์ต๋๋ค. ๋ชจ๋ ์์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค... ์ฌ๋ฌ๋ถ ์ต๊ณ ์ ๋๋ค!
์๋ ํ์ธ์, PeerJS์์ ํ๋ฉด ๊ณต์ ๋ฅผ ํตํฉํ๋ ๋ฐ ๋์์ ์ฃผ์ค ์ ์์ต๋๊น?
ํ๋ฉด ๊ณต์ ๋ฅผ ์ํ๋ ๋ถ๋ค์ ์์์ ๋ง์๋๋ฆฐ ๊ฒ์ฒ๋ผ ํตํ๋ฅผ ํ ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก MediaStream์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
ํ๋ฉด ๊ณต์ ๋ฅผ ์ํด MediaStream์ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
let screenStream = await navigator.mediaDevices.getDisplayMedia({
video: true
});
๊ทธ๋ฐ ๋ค์ ๊ฐ๋จํ:
peer.call(remote_peer_key, screenStream);
5๋ถ์ ์ ์ฝํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ;)
ํ๋ฉด ๊ณต์ ๋ฅผ ์ํ๋ ๋ถ๋ค์ ์์์ ๋ง์๋๋ฆฐ ๊ฒ์ฒ๋ผ ํตํ๋ฅผ ํ ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก MediaStream์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
ํ๋ฉด ๊ณต์ ๋ฅผ ์ํด MediaStream์ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
let screenStream = await navigator.mediaDevices.getDisplayMedia({ video: true });
๊ทธ๋ฐ ๋ค์ ๊ฐ๋จํ:
peer.call(remote_peer_key, screenStream);
5๋ถ์ ์ ์ฝํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ;)
peerjs์์ ํ๋ฉด ๊ณต์ ๋ฅผ ์ํ ์์ค ์ฝ๋๋ฅผ ์ ๊ณตํด ์ฃผ์๊ฒ ์ต๋๊น?
๋ฏธ๋ฆฌ๋ณด๋ค
์ฃ์กํฉ๋๋ค. ํ๋ฉด ๊ณต์ ๋ฅผ ์ํ ์ต์ํ์ ์์
์์ ๋ฅผ ์ ๊ณตํ ์๊ฐ์ด ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์์ ํตํ์ ์ค์ ์๋ฅผ ๋ค๊ณ ์์ ๊ฐ์ด ์คํธ๋ฆผ์ ๊ต์ฒดํ๋ฉด ์๋ํฉ๋๋ค.
@theevan ์ด์ฉ๋ฉด ๋ด ์ฝ๋๊ฐ ๋น์ ์ ๋์ธ ๊ฒ์ ๋๋ค
๋ด ํ๋ก์ ํธ์์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์๋ ์ค์ ๋๋ค.
constructor() {
this.peer = new Peer();
this.peer.on('open', (id) => {
this.id = id;
});
this.peer.on('call', (call) => {
call.answer();
call.on('stream', (remoteStream) => {
this.videoElementRef.nativeElement.srcObject = remoteStream;
});
});
}
public async buttonHandler(evento: Event, remotoId: string): Promise<void> {
evento.preventDefault();
const stream = await (navigator.mediaDevices as MyMediaDevices).getDisplayMedia(
{
video: { frameRate: 5, width: 1280, height: 720 },
}
);
const call = this.peer.call(remotoId, stream);
}
@venkpath peer.call(remote_peer_key, screenStream);
์ด๊ฒ์ ์๋ํ์ง๋ง ํ๋ฉด ๊ณต์ ๊ฐ ์ข
๋ฃ๋๋ฉด ๋น๋์ค ํ๋ ์์ด ์ ๊ฑฐ๋์ง ์์ ๋ค๋ฅธ ์ฌ์ฉ์ ์ธก์์๋ .. ํ๋ฉด ๊ณต์ ๊ฐ ๋๋ ํ ํด๋น ๋น๋์ค ์์๋ฅผ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ
@saini3911
์คํธ๋ฆผ์์ "๋ซ๊ธฐ" ์ด๋ฒคํธ๋ฅผ ๋ฃ๊ณ ๋น๋์ค ํ๊ทธ๋ฅผ ์ ๊ฑฐํ์๊ฒ ์ต๋๊น?
https://peerjs.com/docs.html#mediaconnection -on
๊ทธ๊ฒ์ ์ฌ์ฉํ์ง๋ง ์๋ ์ฌ์ฉ์ ์ผ๊ตด ๋ฏธ๋์ด๋ ์ ๊ฑฐํฉ๋๋ค.
๋๋ expressjs์ preerjs์์ ๋ด ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์์ต๋๋ค .. ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ๋ฐฉ์ ์ฐ๊ฒฐํ ํ ๋ฏธ๋์ด ์คํธ๋ฆผ์ด ์ฐ๊ฒฐ๋์ง ์์ ์ด์ .. ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ peerjs์์ ๋ฏธ๋์ด ์คํธ๋ฆผ์ ์ป์ผ๋ ค๋ฉด ํญ์ 3-4๋ฒ ์๋ก ๊ณ ์ณ์ผ ํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
ํ๋ฉด ๊ณต์ ๋ฅผ ์ํ๋ ๋ถ๋ค์ ์์์ ๋ง์๋๋ฆฐ ๊ฒ์ฒ๋ผ ํตํ๋ฅผ ํ ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก MediaStream์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
ํ๋ฉด ๊ณต์ ๋ฅผ ์ํด MediaStream์ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ๊ฐ๋จํ:
5๋ถ์ ์ ์ฝํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ;)