Sip.js: ๋กœ์ปฌ ๋งˆ์ดํฌ ์Œ์†Œ๊ฑฐ

์— ๋งŒ๋“  2017๋…„ 12์›” 13์ผ  ยท  11์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: onsip/SIP.js

์•ˆ๋…•ํ•˜์‹ญ๋‹ˆ๊นŒ,
์–ด์จŒ๋“  ๋กœ์ปฌ ๋งˆ์ดํฌ๋ฅผ ์Œ์†Œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?
Session.mute()๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์นœ์• ํ•˜๋Š”,
ํ”ผ์•„ํƒ€

question

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

0.15.0 ๋ฒ„์ „์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

const pc: any = this.session.sessionDescriptionHandler.peerConnection
    pc.getSenders().forEach((stream: any) => {
      stream.track.enabled = false
    })

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

peerConnection์—์„œ ๋กœ์ปฌ ํŠธ๋ž™์„ ๊ฐ€์ ธ์˜จ ๋‹ค์Œ ํŠธ๋ž™์„ ์Œ์†Œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ SIP.js์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค. ํ”ผ์–ด ์—ฐ๊ฒฐ์„ ์–ป๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ์„ธ์…˜ ์„ค๋ช… ํ•ธ๋“ค๋Ÿฌ ๋ฌธ์„œ ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด๊ฒฐํ–ˆ๋‹ค.

session.getLocalStreams()[0].getAudioTracks()[0].stop()

session.getLocalStreams ๋Š” 0.8+์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ”ผ์–ด ์—ฐ๊ฒฐ์„ ๊ฐ€์ ธ์™€ ํ”ผ์–ด ์—ฐ๊ฒฐ์—์„œ ์ŠคํŠธ๋ฆผ์„ ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

peerConnection์—์„œ ๋กœ์ปฌ ํŠธ๋ž™์„ ๊ฐ€์ ธ์˜จ ๋‹ค์Œ ํŠธ๋ž™์„ ์Œ์†Œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ SIP.js์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค. ํ”ผ์–ด ์—ฐ๊ฒฐ์„ ์–ป๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ์„ธ์…˜ ์„ค๋ช… ํ•ธ๋“ค๋Ÿฌ ๋ฌธ์„œ ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋‚˜๋Š” ์ด๋ ‡๊ฒŒ ํ–ˆ๋‹ค

///mute
var pc = session.sessionDescriptionHandler.peerConnection;
pc.getLocalStreams().forEach(function (stream) {
    stream.getAudioTracks().forEach(function (track) {
        track.enabled = false;
    });
});

๋‚˜๋Š” ์ด๋ ‡๊ฒŒ ํ–ˆ๋‹ค

///mute
var pc = session.sessionDescriptionHandler.peerConnection;
pc.getLocalStreams().forEach(function (stream) {
    stream.getAudioTracks().forEach(function (track) {
        track.enabled = false;
    });
});

์ง€๊ธˆ ์ด๊ฒƒ์„ ์ฐพ๋Š” ์‚ฌ๋žŒ์„ ์œ„ํ•ด:
Chrome์—์„œ peerConnection.getLocalStreams() ๋” ์ด์ƒ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
peerConnection.getSenders() ๋ฐ peerConnection.getReceivers()

0.15.0 ๋ฒ„์ „์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

const pc: any = this.session.sessionDescriptionHandler.peerConnection
    pc.getSenders().forEach((stream: any) => {
      stream.track.enabled = false
    })

์ €๋ฅผ ์œ„ํ•ด ์ผํ•œ @koshelevvasya ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ํŒŒํ‹ฐ์— ๋Šฆ์—ˆ์Šต๋‹ˆ๋‹ค. ์งˆ๋ฌธ: ์›๊ฒฉ ํ”ผ์–ด๊ฐ€ ๋‚ด ๋์—์„œ ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋„๋ก ๋กœ์ปฌ ํ”ผ์–ด๊ฐ€ ๋งˆ์ดํฌ๋ฅผ ์Œ์†Œ๊ฑฐํ–ˆ๋Š”์ง€ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์œ„์˜ @koshelevvasya๊ฐ€ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ํŠธ๋ž™์ด ํ™œ์„ฑํ™”/๋น„ํ™œ์„ฑํ™”๋˜๋ฉด ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ?

@thanh-mel , ์›๊ฒฉ ํ”ผ์–ด๋Š” ๋งˆ์ดํฌ๊ฐ€ ์Œ์†Œ๊ฑฐ๋˜์—ˆ์Œ์„ ์•Œ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ณด๋ฅ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ์š”?

ํŠธ๋ž™์ด ํ™œ์„ฑํ™”/๋น„ํ™œ์„ฑํ™”๋˜๋ฉด ๋ชจ๋“  ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ œ ๊ฒฝํ—˜์ƒ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—

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