Peerjs: ํ™”๋ฉด ๊ณต์œ 

์— ๋งŒ๋“  2013๋…„ 10์›” 24์ผ  ยท  12์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: peers/peerjs

ํ™”๋ฉด ๊ณต์œ ๋ฅผ ์ถ”๊ฐ€ํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ: https://www.webrtc-experiment.com/Pluginfree-Screen-Sharing/

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

ํ™”๋ฉด ๊ณต์œ ๋ฅผ ์›ํ•˜๋Š” ๋ถ„๋“ค์€ ์œ„์—์„œ ๋ง์”€๋“œ๋ฆฐ ๊ฒƒ์ฒ˜๋Ÿผ ํ†ตํ™”๋ฅผ ํ•  ๋•Œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ MediaStream์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ™”๋ฉด ๊ณต์œ ๋ฅผ ์œ„ํ•ด MediaStream์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

let screenStream = await navigator.mediaDevices.getDisplayMedia({
    video: true
});

๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฐ„๋‹จํžˆ:

peer.call(remote_peer_key, screenStream);

5๋ถ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ;)

๋ชจ๋“  12 ๋Œ“๊ธ€

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๋ฒˆ ์ƒˆ๋กœ ๊ณ ์ณ์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰