AD

 개발 전자동방송녹화로봇: My Little Funzinnu

도르발
2019-12-29 22:28:18 12038 42 130

마지막 수정: 2023-01-17


이 글의 업데이트 판입니다

방송 송출이 종종 끊기는 펀가놈을 위해 특별히 수정한 생방송 녹화 스크립트입니다. 우선, 호스팅 채널을 녹화하지 않습니다. 그리고 이전 스크립트와 달리 TS파일을 직접 저장하고, 스트림이 끊긴 후 다시 녹화할 때의 딜레이를 최소화했습니다.

이 스크립트는 24/7 상시감시 및 녹화를 위해 준비된 스크립트이고 설정 과정에서 약간의 프로그래밍적 지식이 필요합니다. 단타성 녹화를 원한다면 더 단순한 거 찾아다 쓰십쇼.

이 글은 (트게더가 터졌을때를 대비해서) 이곳에서도 볼 수 있습니다. 게시판이 잠겨있을 경우에도 해당 링크에서 질문을 달 수 있습니다.


세팅하기 전에

윈도에서도 잘 작동하지만, 진짜 봇을 구축하려면 이 글의 작성자는 리눅스를 사용하는 걸 추천합니다. 리눅스를 쓰는 이유는, 적어도 얘는 업데이트 있다고 지멋대로 재부팅하지는 않으니까요 funzinDodo0


의존성 해결


python3와 streamlink가 설치되어야 합니다. 

  1. 리눅스: 터미널 창에서 sudo apt install python3 (혹은 자신의 리눅스 배포판에 맞는 명령어) 를 실행해 파이썬3을 설치하세요.
    윈도: 이 주소로 이동해 파이썬3를 설치하세요.
  2. PIP을 사용해 pip install --user streamlink를 실행하여 streamlink를 설치해주세요. (이대로 하지 않으면 엄청 구버전이 설치됩니다)
  3. 터미널 창에서 streamlink --version을 입력해 설치된 버전을 확인해주세요. 4.2.0 이상 버전이어야 합니다!


트위치 API를 사용하기 위한 Client ID 취득


트위치 API의 정책 변경으로 인해 OAuth 토큰이 필요하고, 이를 위해 Client ID를 발급받아야 합니다.


  1. 녹화 스크립트 소스코드를 다운받아 적당한 곳에 저장합니다.
  2. 트위치 개발자 콘솔에 접속해 앱을 먼저 등록합니다. (녹화 스크립트도 트위치의 시점에서는 제삼자 앱이기 때문에 토큰 발급을 위해 등록이 필요합니다) Name란에는 twitch라는 단어를 포함하지 않는 적당한 이름 (예: my_streaming_tool_test), OAuth Redirect URLs란에는 http://localhost, Category는 적당한 것을 선택하고 MrDestructoid이(가) 아님을 인증한 다음 Create를 눌러주세요
  3. Developer Applications 하에 방금 등록한 앱 이름이 있을 것입니다. 우측의 Manage를 누릅니다.
  4. Client ID를 복사해 녹화 스크립트의 TWITCH_API_CLIENT_ID에 붙여넣기해 주세요.
  5. New Secret 버튼을 눌러 Client Secret을 발급받아 녹화 스크립트의 TWITCH_API_CLIENT_SECRET에 붙여넣기해 주세요.
  6. 수정된 녹화 스크립트를 저장해 주세요.

여기서 발급된 Client ID와 Client Secret은 개인에게 발급된 비밀번호와 같은 것으로 타인과 공유하여서는 안 됩니다.


녹화 스크립트 사용자화


  • RECORDING_SAVE_ROOT_DIR: 녹화본이 저장되는 루트 디렉토리를 지정합니다. NAS에서 구동시키는 경우 /srv/nfs/twitchrecords 정도가 적당하겠지요. 녹화 스크립트가 저장돼있는 디렉토리를 사용하려면 ./를 입력해주세요.
  • FILE_NAME_FORMATTIME_FORMAT: 녹화되는 파일의 이름 형식을 지정합니다. 기본값은 이전 버전 녹화 스크립트와 동일하게 설정돼있습니다.


녹화 세팅

python 녹화스크립트.py -u 스트리머_아이디 (안 되면 python3에서 3을 떼 보세요)

녹화스크립트.py에는 저장된 녹화스크립트의 파일명을 입력하고 (.py는 떼면 안 됩니다!) 스트리머_아이디에는 녹화하고자 하는 스트리머의 이름이 아닌 스트리머의 트위치 아이디를 입력합니다. (예: 똘똘똘이_jungtaejune)

위의 명령어를 시스템이 부팅되면 자동으로 실행되도록 합니다. 윈도 사용자는 윈도용 bat 파일을 만들어 시작프로그램에 등록하면 되고, 리눅스 사용자는 사용하는 배포판에 맞게 설정해주세요. (.bashrc에 등록하기보다는 자신이 사용하는 데스크탑 환경 — KDE라던지 GNOME이라던지 — 에서 제공하는 방법을 사용하십시오)

위와 같이 세팅한 후 재부팅하면 자동으로 녹화가 이루어질 겁니다.


후처리 (선택적)

Streamlink를 업그레이드하려면 터미널 창에서 pip install --user --upgrade streamlink를 실행하여 주세요.

그냥 다시보기만 할 때는 후처리가 필요 없습니다. 그냥 TS파일 그대로 재생해서 보면 됩니다.

구글 드라이브 업로드용으로 가공하려는 경우에는 이 글을 참고해 주세요.

-트-가 -트-해서 (혹은 야방이어서) 녹화가 2개 이상으로 조각날 때가 있습니다. 그럴 때는 TS파일을 그냥 합쳐버리면 됩니다: cat 영상조각1.ts 영상조각2.ts 영상조각3.ts ... > 온전한영상.ts


알려진 버그


Windows에서 Streamlink 2.x를 3.x로 업그레이드 시 주의할 점


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 이상 버전으로 업데이트해 주세요.

자세한 정보는 아래에서 확인할 수 있습니다:


트위치 한국발 접속의 720p 제한 우회하기


녹화 스크립트를 이 코드로 바꾸어 시도해 보세요. (외부 API를 사용해 일본 서버에서 m3u8 링크를 받아와서 작동합니다. Github의 Yoon0618님 제공)

VPN이 아니면 이젠 안 통하는 것 같습니다 imGlitchfunzinRctToilet 

후원댓글 130
댓글 130개  
이전 댓글 더 보기
이 글에 댓글을 달 권한이 없습니다. 로그인해 보세요.
▲윗글 html viewr 비알콜성푸아그라
 잡담 공지 개발 아트 영상 털
30
 개발
DCCON extension 건의 [10]
Broadcaster Funzinnu
03-04
13
02-27
21
 개발
‭200227 '통계봇' 변경점 #4 [5]
통계봇
02-27
8
 개발
C++ / C# 관련 질문이요. [2]
Locketgoma
02-27
32
 개발
ChatAssistX 1.7.0.0 [4]
라스트오더
02-26
37
 개발
제작 포기 [8]
신세이가
02-26
8
02-25
3
 개발
css잘알분들 있나요 [1]
Locketgoma
02-23
19
02-17
6
02-10
24
 개발
IT 개발회사 금기어 [11]
dd
02-07
14
01-21
3
 개발
C++ 잘아시는분 계심미가 [3]
Locketgoma
01-16
3
 개발
코딩 (컴파일 과정) 질문 [5]
Locketgoma
01-09
18
 개발
html viewr [7]
비알콜성푸아그라
01-02
»
12-29
7
12-22
42
 개발
funzinnu.com 이야기 [32]
Broadcaster Funzinnu
12-19
5
12-17
10
 개발
비밀글 작성 테스트 [2]
null_ptr_
12-16
9
 개발
자바스크립트 언제 이렇게 발전했나 [4]
상보성금속산화막반도체
12-13
5
 개발
XSS 테스트 [5]
null_ptr_
12-12
6
 개발
DB로 고통받는중... [4]
lap
12-12
인기글 글 쓰기