송출이 불안정한 스트리머의 방송을 최소한의 딜레이로 녹화하도록 만들어진 녹화 스크립트입니다. 호스팅 채널을 녹화하지 않고, 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 이상 버전으로 업데이트해 주세요.
자세한 정보는 아래에서 확인할 수 있습니다:
시놀로지 NAS에서 돌리려고 하는데 혹시 NAS에서 돌리는 방법도 알려주실 수 있나요?