Video Room
videoroom์ ์์ ํ์ ๊ธฐ๋ฅ์ ์ธํฐ๋ท์ ์ด์ฉํ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๊ตฌํํ ๊ฒ์ ๋๋ค. Omnitalk SDK๋ฅผ ์ฌ์ฉํ์ฌ ํ์์ค(๋ฃธ) ์์ฑ ๋ฐ ์ฐธ์ฌ, ์ด๋ฒคํธ ๋ฉ์์ง์ ๋์ํ๋ ๊ฒ์ผ๋ก ์์ฑ ํ์ ๊ธฐ๋ฅ์ ๊ฐ๋จํ ๊ตฌํํ ์ ์์ต๋๋ค.
Step 1. ์ธ์
์์ฑ
Omnitalk SDK์ ์ด๊ธฐํ๋ฅผ ์ ์ธํ ๋ชจ๋ API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ฐ์ ์ ์ผ๋ก createSession()์ ํธ์ถํ์ฌ ์ธ์ ์ ์์ฑํด์ผ ํฉ๋๋ค. createSession()์ ํ๋ผ๋ฏธํฐ์ธ userId๋ ์ฌ์ฉ์๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ ๊ณ ์ ํ id์ด๋ฉฐ audiocall ๋ฐ์ ์ ์ํ offerCall() ํธ์ถ์ ์ฌ์ฉ๋ฉ๋๋ค. userId๋ Optional ์ด๋ฉฐ, null๋ก ์ ๋ฌํ ๊ฒฝ์ฐ Omnitalk ์๋ฒ์์ ์์์ id๋ฅผ ๋ถ์ฌํฉ๋๋ค.
Step 2. ํ์์ค ์์ฑ / ์กฐํ
createRoom() API ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋๋ค์ด ์
์ฅ ํ ์ ์๋ ํ์์ค(๋ฃธ)์ ์์ฑํฉ๋๋ค. createRoom()์ ํ์ ํ๋ผ๋ฏธํฐ์ roomType์ Omnitalk SDK์์ enum type์ผ๋ก ์ ๊ณตํฉ๋๋ค. ์์ฑ ํ์์ ๊ฒฝ์ฐ๋ videoroom
์ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค. createRoom() API ๋ฆฌํด ๊ฐ์ฒด์ roomId ๋ก ํ์์ค์ ์ฐธ์ฌํ ์ ์์ต๋๋ค. roomType์ ์ ์ธํ ๋๋จธ์ง ํ๋ผ๋ฏธํฐ๋ Optional ์
๋๋ค.
์ด๋ฏธ ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ํ์์ค์ ์์ฑ ํ๋ค๋ฉด roomList() API ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ ์์ฑ๋ ํ์์ค ๋ชฉ๋ก์ ์กฐํํ ์ ์์ต๋๋ค. ์์ฑ ํ์์ค ๋ชฉ๋ก๋ง ์กฐํํ๊ณ ์ถ์ ๊ฒฝ์ฐ roomType ์ videoroom
์ผ๋ก ์ ๋ฌํ์๋ฉด ๋ฉ๋๋ค. ์กฐํํ ๋ชฉ๋ก ๊ฒฐ๊ณผ์ roomId ๋ก ํ์์ค์ ์ฐธ์ฌํ ์ ์์ต๋๋ค.
Step 3. ํ์์ค ์ฐธ์ฌ
joinRoom() API ๋ฅผ ์ฌ์ฉํ์ฌ ํ์์ค์ ์ฐธ์ฌํ ์ ์์ต๋๋ค. ํ์์ค์ ์ฐธ์ฌํ๊ฒ ๋๋ฉด ๋ณ๋์ ์์ ์์ด ์ฐธ์ฌ์๋ค๊ณผ ์์ฑ ํ์๋ฅผ ํ ์ ์๊ฒ ๋๋ฉฐ, ์์ ์ก์ถ์ ๋ค์ ์คํ ์ ์ฐธ๊ณ ๋ฐ๋๋๋ค. ํ์์ค์ ๊ด๋ จ๋ ์ด๋ฒคํธ ๋ฉ์ธ์ง๋ฅผ ์์ ํ ์ ์์ต๋๋ค. ์์ ํ์์์ ์์ ๊ฐ๋ฅํ ์ด๋ฒคํธ๋ ์๋์ ๊ฐ์ต๋๋ค. ์์ธํ ๋ด์ฉ์ Event Message ๋ฅผ ์ฐธ์กฐ ๋ฐ๋๋๋ค.
CONNECTED_EVENT - ์๋ก์ด ์ฐธ๊ฐ์ ์ ์ฅํ์ ๋
BROADCASTING_EVENT - ๋ค๋ฅธ ์ฐธ๊ฐ์๊ฐ ์์์ ์ก์ถํ์ ๋
LEAVE_EVENT - ๋ค๋ฅธ ์ฐธ๊ฐ์๊ฐ ํด์ฅ ํ์ ๋
MUTE_EVENT - ๋ค๋ฅธ ์ฐธ๊ฐ์๊ฐ mute ํ์ ๋
UNMUTE_EVENT - ๋ค๋ฅธ ์ฐธ๊ฐ์๊ฐ unmute ํ์ ๋
SCREEN_SHARE_EVENT - ํ๋ฉด ๊ณต์ ๋ฐ์ ์ด๋ฒคํธ
SCREEN_UNSHARE_EVENT - ํ๋ฉด ๊ณต์ ์ข ๋ฃ ์ด๋ฒคํธ
MESSAGE_EVENT - ์ฑํ ๋ฉ์ธ์ง ์์ ์ด๋ฒคํธ, ํ์์ค ์ ์ฅ์ ์ฑํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ ์ํ๊ฐ ๋ฉ๋๋ค. ์ฑํ ๊ธฐ๋ฅ ์ฌ์ฉ๋ฒ์ Chatting ๋ฌธ์๋ฅผ ์ฐธ์กฐ ๋ฐ๋๋๋ค.
Step 4. ์์ ์ก์ถ
publish() API ๋ฅผ ์ฌ์ฉํ์ฌ ์นด๋ฉ๋ผ ์์์ ์ก์ถํ ์ ์์ต๋๋ค. ์ก์ถ๋๋ ์์์ ์ถ๋ ฅํ SurfaceViewRenderer
๊ฐ์ฒด๋ฅผ ์ ๋ฌํฉ๋๋ค. ํด๋น ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด์ org.webrtc ํจํค์ง๋ฅผ import ํด์ผ ํฉ๋๋ค. ( Omnitalk SDK ์ค์น์ ํฌํจ๋ ํจํค์ง )
publish๋ฅผ ํ๊ฒ ๋๋ฉด ๋ค๋ฅธ ์ฐธ๊ฐ์๋ค์ BROADCASTING_EVENT
์ด๋ฒคํธ ๋ฉ์ธ์ง๋ฅผ ๋ฐ๊ฒ ๋ฉ๋๋ค. ๋ฐฉ์ก ๊ตฌ๋
์ ๋ค์ ์คํ
์ ์ฐธ๊ณ ๋ฐ๋๋๋ค.
Step 5. ์์ ๊ตฌ๋
subscribe() API ๋ฅผ ์ฌ์ฉํ์ฌ ์ก์ถ๋ ์์์ ๊ตฌ๋
ํ ์ ์์ต๋๋ค. ํ๋ผ๋ฏธํฐ์ ์์ ์ก์ถ์์ session ์ ์ ๋ฌํ์๋ฉด ๋ฉ๋๋ค. session์ partiList() API ๋๋ BROADCASTING_EVENT
๋๋ SCREEN_SHARE_EVENT
์์ ํ์ธ ํ์ค ์ ์์ต๋๋ค.
์ก์ถ๋๋ ์์์ ํ๋ฉด์ ์ฌ์ํ๊ธฐ ์ํด์ ์์์ ์ถ๋ ฅํ SurfaceViewRenderer
๊ฐ์ฒด๋ฅผ ์ ๋ฌํฉ๋๋ค. ํด๋น ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด์ org.webrtc ํจํค์ง๋ฅผ import ํด์ผ ํฉ๋๋ค. ( Omnitalk SDK ์ค์น์ ํฌํจ๋ ํจํค์ง )
์์ ๊ตฌ๋
์ทจ์
unsubscribe() API ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ๋ ์ค์ด๋ ์์์ ๊ตฌ๋ ์ทจ์ ํ ์ ์์ต๋๋ค.
Step 6. ํ์์ค ํด์ฅ
leave() API๋ฅผ ํตํด์ ํ์์ค์์ ํด์ฅํ ์ ์์ต๋๋ค. ํ๋ผ๋ฏธํฐ์ session์ ์ ๋ฌํ์ง ์์ผ๋ฉด ์์ ์ ๋ฐฉ์ก์ ์ข ๋ฃํ๊ณ ํด์ฅ(ํตํ ์ข ๋ฃ)ํ๊ฒ ๋ฉ๋๋ค. session๋ฅผ ์ ๋ฌํ๋ฉด ํด๋น session์ ๊ฐ์ง ์ฌ์ฉ์๊ฐ ํด์ฅ(ํตํ ์ข ๋ฃ) ํ๊ฒ ๋ฉ๋๋ค. ํด๋น ์ํฉ์ ์์ ๊ฑฐ์ ์ด๋ ๊ฐ์ ํด์ฅ ๋ฑ์ ๊ธฐ๋ฅ์ผ๋ก ํ์ฉํ ์ ์์ต๋๋ค.
๋ชฉ๋ก ์กฐํ
์ฐธ์ฌ์ ๋ชฉ๋ก ์กฐํ
partiList() API ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฅํ ํ์์ค์ ์ฐธ์ฌํ ์ฌ์ฉ์ ๋ชฉ๋ก์ ์กฐํํ ์ ์์ต๋๋ค.
์ถ๊ฐ ์์ - partiList์ ๊ฒฐ๊ณผ์ ๋ค๋ฅธ ์ฐธ๊ฐ์์ mute ์ฌ๋ถ๋ฅผ ์ ์ ์์ต๋๋ค.
๋ฐฉ์ก ๋ชฉ๋ก ์กฐํ
publishList() API ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฅํ ํ์์ค์ ์ก์ถ์ค์ธ ๋ฐฉ์ก ๋ชฉ๋ก์ ์กฐํํ ์ ์์ต๋๋ค.
ํ๋ฉด๊ณต์ ์ ๋ณด ์กฐํ
screenList() API ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฅํ ํ์์ค์ ์ก์ถ์ค์ธ ํ๋ฉด ๊ณต์ ์ ๋ณด๋ฅผ ์กฐํํ ์ ์์ต๋๋ค.
๋น๋์ค ์ฅ์น ์ ์ด
mute/unmute
์์ ์ ํ์ค์ ์์ ์ก์ถ์ ์ค๋จํ ์ ์๋๋ก API๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฌ์ฉ๋ฒ๊ณผ ์์ธํ ๋ด์ฉ์ API Reference์ mute/unmute ๋ถ๋ถ์ ์ฐธ์กฐ ๋ฐ๋๋๋ค. mute/unmute API์ ํ๋ผ๋ฏธํฐ์ธ TRACK_TYPE ์ Omnitalk SDK์์ enum type์ผ๋ก ์ ๊ณตํฉ๋๋ค. ์์๋ ์๋์ ๊ฐ์ต๋๋ค.
์
๋ ฅ ์ฅ์น ๋ณ๊ฒฝ
์ ํ ํตํ์ค์ ์ ๋ ฅ(์นด๋ฉ๋ผ) ์ฅ์น๋ฅผ ๋ณ๊ฒฝํ ์ ์๋๋ก switchCameraDevice() API๋ฅผ ์ ๊ณตํฉ๋๋ค. API ํธ์ถ์ ํ๋ฉด ์นด๋ฉ๋ผ์ ์ ๋ฉด ์นด๋ฉ๋ผ ๊ฐ ์ ํ์ด ์ด๋ฃจ์ด ์ง๋๋ค. ์์๋ ์๋์ ๊ฐ์ต๋๋ค.
์ค๋์ค ์ฅ์น ์ ์ด
mute/unmute
์ ํ ํตํ์ค์ ์์๊ฑฐ๋ฅผ ํ ์ ์๋๋ก API๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฌ์ฉ๋ฒ๊ณผ ์์ธํ ๋ด์ฉ์ API Reference์ mute/unmute ๋ถ๋ถ์ ์ฐธ์กฐ ๋ฐ๋๋๋ค. mute/unmute API์ ํ๋ผ๋ฏธํฐ์ธ TRACK_TYPE ์ Omnitalk SDK์์ enum type์ผ๋ก ์ ๊ณตํฉ๋๋ค. ์์๋ ์๋์ ๊ฐ์ต๋๋ค.
์
๋ ฅ ์ฅ์น ๋ณ๊ฒฝ
์ ํ ํตํ์ค์ ์
๋ ฅ(๋ง์ดํฌ) ์ฅ์น๋ฅผ ๋ณ๊ฒฝํ ์ ์๋๋ก setAudioDevice() API๋ฅผ ์ ๊ณตํฉ๋๋ค. ํ๋ผ๋ฏธํฐ์ธ MIC_TYPE์ Omnitalk SDK์์ enum type์ผ๋ก ์ ๊ณตํฉ๋๋ค. ๊ท์ ๋์ด ์ ํ๋ฐ๋ defaultInEar
ํ์
๊ณผ ์คํผ์ปคํฐ ๋ชจ๋์ธ speaker
๋ ๊ฐ์ง๋ก ์ ๊ณต ๋ฉ๋๋ค. ์์๋ ์๋์ ๊ฐ์ต๋๋ค.
๋ฃธ ์ญ์
ํ์ฌ ์ฐธ์ฌ์ค์ด์ง ์์ ํ์์ค์ destroyRoom() API ๋ฅผ ์ฌ์ฉํ์ฌ ํ์์ค์ ์ญ์ ํ ์ ์์ต๋๋ค.
Last updated