์ก์ถ์ด ๋ถ์์ ํ ์คํธ๋ฆฌ๋จธ์ ๋ฐฉ์ก์ ์ต์ํ์ ๋๋ ์ด๋ก ๋ นํํ๋๋ก ๋ง๋ค์ด์ง ๋ นํ ์คํฌ๋ฆฝํธ์ ๋๋ค. ํธ์คํ ์ฑ๋์ ๋ นํํ์ง ์๊ณ , TSํ์ผ์ ์ง์ ์ ์ฅํฉ๋๋ค.
์ด ์คํฌ๋ฆฝํธ๋ 24/7 ์์๊ฐ์ ๋ฐ ๋ นํ๋ฅผ ์ํด ์ค๋น๋ ์คํฌ๋ฆฝํธ์ด๊ณ ์ค์ ๊ณผ์ ์์ ์ฝ๊ฐ์ ํ๋ก๊ทธ๋๋ฐ์ ์ง์์ด ํ์ํฉ๋๋ค. ๋จํ์ฑ ๋ นํ๋ฅผ ์ํ๋ค๋ฉด ๋ ๋จ์ํ ๊ฑฐ ์ฐพ์๋ค ์ฐ์ญ์ผ.
์น์ง์ง์ฉ ์คํฌ๋ฆฝํธ๋ฅผ ํ ์คํธํ๊ณ ์์ต๋๋ค. ์ฌ๋ฌ๋ถ์ ๋ง์ ๊ธฐ์ฌ๊ฐ ํ์ํฉ๋๋ค ๐๐
์๋์์๋ ์๋์ ํ๊ฒ ์ง๋ง, ์ง์ง ๋ด์ ๊ตฌ์ถํ๋ ค๋ฉด ์ด ๊ธ์ ์์ฑ์๋ ๋ฆฌ๋ ์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฑธ ์ถ์ฒํฉ๋๋ค. ๋ฆฌ๋ ์ค๋ฅผ ์ฐ๋ ์ด์ ๋, ์ ์ด๋ ์๋ ์ ๋ฐ์ดํธ ์๋ค๊ณ ์ง๋ฉ๋๋ก ์ฌ๋ถํ ํ์ง๋ ์์ผ๋๊น์ (๋์ถฉ ํธ์์น ์นดํ ์ฝ)
python3์ streamlink๊ฐ ์ค์น๋์ด์ผ ํฉ๋๋ค.
- ๋ฆฌ๋
์ค: ํฐ๋ฏธ๋ ์ฐฝ์์
sudo apt install python3
(ํน์ ์์ ์ ๋ฆฌ๋ ์ค ๋ฐฐํฌํ์ ๋ง๋ ๋ช ๋ น์ด) ๋ฅผ ์คํํด ํ์ด์ฌ3์ ์ค์นํ์ธ์. ์๋: ์ด ์ฃผ์๋ก ์ด๋ํด ํ์ด์ฌ3๋ฅผ ์ค์นํ์ธ์. - PIP์ ์ฌ์ฉํด
pip install --user streamlink
๋ฅผ ์คํํ์ฌ streamlink๋ฅผ ์ค์นํด์ฃผ์ธ์. (์ด๋๋ก ํ์ง ์์ผ๋ฉด ์์ฒญ ๊ตฌ๋ฒ์ ์ด ์ค์น๋ฉ๋๋ค) - ํฐ๋ฏธ๋ ์ฐฝ์์
streamlink --version
์ ์ ๋ ฅํด ์ค์น๋ ๋ฒ์ ์ ํ์ธํด์ฃผ์ธ์.4.2.0
์ด์ ๋ฒ์ ์ด์ด์ผ ํฉ๋๋ค!
ํธ์์น API์ ์ ์ฑ ๋ณ๊ฒฝ์ผ๋ก ์ธํด OAuth ํ ํฐ์ด ํ์ํ๊ณ , ์ด๋ฅผ ์ํด Client ID๋ฅผ ๋ฐ๊ธ๋ฐ์์ผ ํฉ๋๋ค.
- ๋ นํ ์คํฌ๋ฆฝํธ ์์ค์ฝ๋๋ฅผ ๋ค์ด๋ฐ์ ์ ๋นํ ๊ณณ์ ์ ์ฅํฉ๋๋ค.
- ํธ์์น ๊ฐ๋ฐ์ ์ฝ์์ ์ ์ํด ์ฑ์ ๋จผ์ ๋ฑ๋กํฉ๋๋ค. (๋
นํ ์คํฌ๋ฆฝํธ๋ ํธ์์น์ ์์ ์์๋ ์ ์ผ์ ์ฑ์ด๊ธฐ ๋๋ฌธ์ ํ ํฐ ๋ฐ๊ธ์ ์ํด ๋ฑ๋ก์ด ํ์ํฉ๋๋ค)
Name๋์๋ twitch๋ผ๋ ๋จ์ด๋ฅผ ํฌํจํ์ง ์๋ ์ ๋นํ ์ด๋ฆ (์: my_streaming_tool_test), OAuth Redirect URLs๋์๋
http://localhost
, Category๋ ์ ๋นํ ๊ฒ์ ์ ํํ๊ณ MrDestructoid์ด(๊ฐ) ์๋์ ์ธ์ฆํ ๋ค์ Create๋ฅผ ๋๋ฌ์ฃผ์ธ์ - Developer Applications ํ์ ๋ฐฉ๊ธ ๋ฑ๋กํ ์ฑ ์ด๋ฆ์ด ์์ ๊ฒ์ ๋๋ค. ์ฐ์ธก์ Manage๋ฅผ ๋๋ฆ ๋๋ค.
- Client ID๋ฅผ ๋ณต์ฌํด ๋
นํ ์คํฌ๋ฆฝํธ์
TWITCH_API_CLIENT_ID
์ ๋ถ์ฌ๋ฃ๊ธฐํด ์ฃผ์ธ์. - New Secret ๋ฒํผ์ ๋๋ฌ Client Secret์ ๋ฐ๊ธ๋ฐ์ ๋
นํ ์คํฌ๋ฆฝํธ์
TWITCH_API_CLIENT_SECRET
์ ๋ถ์ฌ๋ฃ๊ธฐํด ์ฃผ์ธ์. - ์์ ๋ ๋ นํ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ฅํด ์ฃผ์ธ์.
์ฌ๊ธฐ์ ๋ฐ๊ธ๋ Client ID์ Client Secret์ ๊ฐ์ธ์๊ฒ ๋ฐ๊ธ๋ ๋น๋ฐ๋ฒํธ์ ๊ฐ์ ๊ฒ์ผ๋ก ํ์ธ๊ณผ ๊ณต์ ํ์ฌ์๋ ์ ๋ฉ๋๋ค.
RECORDING_SAVE_ROOT_DIR
: ๋ นํ๋ณธ์ด ์ ์ฅ๋๋ ๋ฃจํธ ๋๋ ํ ๋ฆฌ๋ฅผ ์ง์ ํฉ๋๋ค. NAS์์ ๊ตฌ๋์ํค๋ ๊ฒฝ์ฐ/srv/nfs/twitchrecords
์ ๋๊ฐ ์ ๋นํ๊ฒ ์ง์. ๋ นํ ์คํฌ๋ฆฝํธ๊ฐ ์ ์ฅ๋ผ์๋ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด./
๋ฅผ ์ ๋ ฅํด์ฃผ์ธ์.FILE_NAME_FORMAT
๊ณผTIME_FORMAT
: ๋ นํ๋๋ ํ์ผ์ ์ด๋ฆ ํ์์ ์ง์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ์ด์ ๋ฒ์ ๋ นํ ์คํฌ๋ฆฝํธ์ ๋์ผํ๊ฒ ์ค์ ๋ผ์์ต๋๋ค.
python ๋
นํ์คํฌ๋ฆฝํธ.py -u ์คํธ๋ฆฌ๋จธ_์์ด๋
๋
นํ์คํฌ๋ฆฝํธ.py์๋ ์ ์ฅ๋ ๋
นํ์คํฌ๋ฆฝํธ์ ํ์ผ๋ช
์ ์
๋ ฅํ๊ณ (.py๋ ๋ผ๋ฉด ์ ๋ฉ๋๋ค!) ์คํธ๋ฆฌ๋จธ_์์ด๋์๋ ๋
นํํ๊ณ ์ ํ๋ ์คํธ๋ฆฌ๋จธ์ ์ด๋ฆ์ด ์๋ ์คํธ๋ฆฌ๋จธ์ ํธ์์น ์์ด๋๋ฅผ ์
๋ ฅํฉ๋๋ค. (์: ๋๋๋์ด_
โ jungtaejune
)
์์ ๋ช ๋ น์ด๋ฅผ ์์คํ ์ด ๋ถํ ๋๋ฉด ์๋์ผ๋ก ์คํ๋๋๋ก ํฉ๋๋ค. ์๋ ์ฌ์ฉ์๋ ์๋์ฉ bat ํ์ผ์ ๋ง๋ค์ด ์์ํ๋ก๊ทธ๋จ์ ๋ฑ๋กํ๋ฉด ๋๊ณ , ๋ฆฌ๋ ์ค ์ฌ์ฉ์๋ ์ฌ์ฉํ๋ ๋ฐฐํฌํ์ ๋ง๊ฒ ์ค์ ํด์ฃผ์ธ์. (.bashrc์ ๋ฑ๋กํ๊ธฐ๋ณด๋ค๋ ์์ ์ด ์ฌ์ฉํ๋ ๋ฐ์คํฌํ ํ๊ฒฝ โ KDE๋ผ๋์ง GNOME์ด๋ผ๋์ง โ ์์ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ญ์์ค)
์์ ๊ฐ์ด ์ธํ ํ ํ ์ฌ๋ถํ ํ๋ฉด ์๋์ผ๋ก ๋ นํ๊ฐ ์ด๋ฃจ์ด์ง ๊ฒ๋๋ค.
Streamlink๋ฅผ ์
๊ทธ๋ ์ด๋ํ๋ ค๋ฉด ํฐ๋ฏธ๋ ์ฐฝ์์ pip install --user --upgrade streamlink
๋ฅผ ์คํํ์ฌ ์ฃผ์ธ์.
๊ทธ๋ฅ ๋ค์๋ณด๊ธฐ๋ง ํ ๋๋ ํ์ฒ๋ฆฌ๊ฐ ํ์ ์์ต๋๋ค. ๊ทธ๋ฅ TSํ์ผ ๊ทธ๋๋ก ์ฌ์ํด์ ๋ณด๋ฉด ๋ฉ๋๋ค.
-ํธ-๊ฐ -ํธ-ํด์ (ํน์ ์ผ๋ฐฉ์ด์ด์) ๋
นํ๊ฐ 2๊ฐ ์ด์์ผ๋ก ์กฐ๊ฐ๋ ๋๊ฐ ์์ต๋๋ค. ๊ทธ๋ด ๋๋ TSํ์ผ์ ๊ทธ๋ฅ ํฉ์ณ๋ฒ๋ฆฌ๋ฉด ๋ฉ๋๋ค: cat ์์์กฐ๊ฐ1.ts ์์์กฐ๊ฐ2.ts ์์์กฐ๊ฐ3.ts ... > ์จ์ ํ์์.ts
์ด ๊ธ์ ๋ค์์ ์์น์์๋ ๋ณผ ์ ์์ต๋๋ค:
- ImportError: no module named requests
- ํฐ๋ฏธ๋ ์ฐฝ์์
pip install --user requests
๋ฅผ ์ฌ์ฉํด ๋ชจ๋์ ์ค์นํด ์ฃผ์ธ์.
- ํฐ๋ฏธ๋ ์ฐฝ์์
- unrecognized arguments: twitch.tv/
- ์๋์ ์๋ ค์ง ๋ฒ๊ทธ โ Windows์์ Streamlink 2.x๋ฅผ 3.x๋ก ์ ๊ทธ๋ ์ด๋ ์ ์ฃผ์ํ ์ ์ ๋ด ์ฃผ์ธ์.
๋ นํ ์คํฌ๋ฆฝํธ๋ฅผ ์ด ์ฝ๋๋ก ๋ฐ๊พธ์ด ์๋ํด ๋ณด์ธ์. (์ธ๋ถ API๋ฅผ ์ฌ์ฉํด ์ผ๋ณธ ์๋ฒ์์ m3u8 ๋งํฌ๋ฅผ ๋ฐ์์์ ์๋ํฉ๋๋ค. Yoon0618๋ ์ ๊ณต)
Streamlink๊ฐ 2.x๋ฒ์ ์์ 3.0์ผ๋ก ์
๊ทธ๋ ์ด๋ ๋๋ฉด์ ๊ธฐ๋ณธ์ค์ ์ด ๋ฐ๋์๋๋ฐ, ์
๊ทธ๋ ์ด๋ ํ rtmp-rtmpdump ์ค๋ฅ ํน์ unrecognized arguments: twitch.tv/
์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์๋ Streamlink๋ฅผ ์
๊ทธ๋ ์ด๋ํ ๋ค์, Streamlink์ ์ค์ ํ์ผ์ ๋ง์ ธ์ค์ผ ํฉ๋๋ค.
์๋ํค+R โ %APPDATA%
์
๋ ฅํ ์ํฐ โ streamlink ํด๋ โ config ํ์ผ ๋ฉ๋ชจ์ฅ์ผ๋ก ์ด๊ธฐ โ rtmp-rtmpdump
๊ฐ ์๋ ์ค ์ญ์ (ํ ๊ฐ๊ฐ ์๋๋๋ค!)
์์ธํ ์ ๋ณด๋ ์๋์์ ํ์ธํ ์ ์์ต๋๋ค:
Twitch ์ชฝ์์ ํ์ง ์ต์ ์ ์ด์ํ ํ์์ผ๋ก ๋ฐํํ๋ ๋ฌธ์ ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ฐํ์ ์ผ๋ก 1080p๋ก ์ก์ถ์ค์ธ ๋ฐฉ์ก์ด 720p๋ก ๋ นํ๋๋ ๊ฒฝ์ฐ๊ฐ ๊ฐํน ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ์๋ Streamlink๋ฅผ 4.2.0 ์ด์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํด ์ฃผ์ธ์.
์์ธํ ์ ๋ณด๋ ์๋์์ ํ์ธํ ์ ์์ต๋๋ค:
@Helix-hy
๋ญ๊ฐ ์ด์ํ๋ฐ์ ๊ผฌ์ด๋๊ฑฐ ๊ฐ์์ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊พธ๋ ์ ๋๋ก ๊ด๊ณ ์คํต๋๊ณ ์ ์๋์ํฉ๋๋ค.
์ ์๋๋ก์ง์์ VPN ๋ค์ค๊ฒ์ดํธ์จ์ด ๊ฑธ์ด๋๊ณ 1080p ๋ นํ์ค์ ๋๋ค. (์คํฌ๋ฆฝํธ๊ฐ ์๋๋ผ VPN์ฐํ)
213๋ฒ์งธ ์ค
์ด๋ ๊ฒ ๋ฆฌ์คํธ ์์ฐ๊ณ ์ ์ฒด url, shell=True ์ต์ ์ฃผ๊ณ , ๋ฐ๋ถ๋ถ์ 215~220๋ฒ ์ค(#get m3u8 link... ~ ret = subprocess...)์ ์ฃผ์์ฒ๋ฆฌํ ์ฌ์ฉ์ค์ ๋๋ค.
Auth ํ ํฐ ๋ถ๋ถ์ OAuth ์์ฐ๊ณ ์ฝ๋ ์๋ถ๋ถ์์ ๋ฐ๊ธ๋ฐ์ Bearer ํ ํฐ ๊ทธ๋๋ก ์ ๋ ๊ฒ ๋ฐ์๋ฃ์ผ๋ ์ ์๋์ํ๋ค์.