덕질을 위한 툴 정보

스트림링크(streamlink)로 생중계/생방송 스트림 추출하기

ᛰᚼᛥ 2018. 1. 24. 20:30
반응형

 
 
잘 쓰던 라이브스트리머가 유튜브 생중계 추출 시에 오류를 뱉어서 갈아타게 되었다
 
해결책을 찾긴 했지만!
15년 이후로 업데이트가 없는 프로그램이니 이후에 또 어떤 오류가 생길지 모르므로
갈아타는 게 좋을 것 같았다
 


 
 
 
 
* pc에서 사진이 잘 안 보이면 사진을 클릭해 주세요
이미지를 클릭하면 원본 크기로 보입니다
 
 
 
 
 
스트림링크 설치 & 사용법
 
 
 
1. python 3을 설치하고 컴퓨터를 재부팅(다시 시작)한다
 
 
https://tutorial.djangogirls.org/ko/python_installation/
 
http://kybin.github.io/translateDiveIntoPython3korean/installing-python.html
 
 
저보다 윗길이신 분들의 설명
더 정확하고 쉬움
 
주의할 점은 
자기 윈도우에 맞게 설치할 것 (32비트 or 64비트)
경로 추가에 체크할 것
파이썬 최신버전을 설치할 것
 
 
 

64비트인지 확인하는 방법
 
 
출처 사이트에는 설치과정 중 "python.exe를 경로에 추가"를 선택하라고 되어있는데 만약 저런 게 안 나오면 상관없이 설치 쭉쭉하면 됨
 
안 나왔는데 나중에 명령창에 입력할 때 
"내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다."라고 나오고 안되면
http://wxmin.tistory.com/121 [윈도우(Windows) 10 에서 파이썬(PYthon) 환경변수(Path) 설정]  
여기 설명대로 경로 추가할 것
 
 
 
2. 관리자 권한으로 명령 프롬프트를 열고 다음 명령어를 입력한다
 
시간이 지나서 설치법 바뀐 것 같음

 

스트림링크 사용 방법 1: 다운로드, 설치 (Streamlink) - Tip A to Z

 

스트림링크 사용 방법 1: 다운로드, 설치 (Streamlink) - Tip A to Z

스트림링크는 라이브 영상은 추출하는데 자주 쓰는 프로그램이다. 유튜브는 ytarchive로 추출하지만 그 외의 사이트인 경우에는 스트림링크를 쓴다.

tipatoz.com

이 글 보면 됨
 
 
관리자 권한으로 명령창 여는 법: 
윈도우 키 + s 키 -> 명령 프롬프트 or cmd 쓰면 나타나는 명령 프롬프트 오른 클릭 -> 관리자 권한으로 실행
 

 
 
 
 
 
입력할 명령어:
python.exe -m pip install streamlink
 
메모장에 위 내용 복사 붙여 넣기하고 복사한 다음에
명령 프롬프트에서 오른 클릭 또는 ctrl+v 하면 붙여 넣어 짐 
그리고 엔터 누르면 됨
 

 
이렇게 입력하면 자기가 알아서 설치함
 

 
요렇게 나오면 설치 다 끝난 거니 명령창 꺼도 됨
 
참고로 언인스톨은
python.exe -m pip uninstall streamlink
 
 
 
3. 명령 프롬프트에 streamlink 명령어 입력해서 추출
(관리자 권한으로 실행 안 해도 됨)

 

스트림링크 사용 방법 2-1: 라이브 추출 1️⃣ 기본, 옵션 (Streamlink) - Tip A to Z

 

스트림링크 사용 방법 2-1: 라이브 추출 1️⃣ 기본, 옵션 (Streamlink) - Tip A to Z

스트림링크로 진행 중인 라이브 방송 추출하는 법을 다룹니다. 이번 글은 기본적인 방법 위주입니다.

tipatoz.com

스트림링크 사용 방법 2-2: 라이브 추출 2️⃣ 플러그인, 스트리밍 프로토콜 (Streamlink) - Tip A to Z

 

스트림링크 사용 방법 2-2: 라이브 추출 2️⃣ 플러그인, 스트리밍 프로토콜 (Streamlink) - Tip A to Z

스트림링크의 플러그인 지원 사이트에서의 추출법과 플러그인 미지원 사이트에서의 추출법을 다룬다.

tipatoz.com

위 글들 보고 오셈 (아래 설명만으로는 부족한 부분이 많음)
 
 
 
streamlink "생방송/실시간 스트림 주소best -o "파일경로\파일명.확장자" 
 
큰 틀이 이럼 (파일경로는 생략 가능)
어떤 영상 사이트냐에 따라 자잘한 부분은 바뀌지만..
 
위의 기본 공식을 본인 상황에 맞게 알맞게 바꿔서 입력하면 됨
메모장에서 쓰고 복사 붙여 넣기 하면 됨
파일명이나 확장자는 자기 맘대로 정해도 됨
 
여기서 실시간 스트림 주소는 m3u8 주소 같은 거임
그냥 방송 사이트 주소 넣으면 안 되고
지원되는 사이트는 그냥 방송 사이트 주소 넣어도 됨
지원 안 되는 사이트는 스트림 파일이 전달되는 주소를 찾아내서 넣어야 함
 
내가 m3u8 같은 실시간 스트림 주소 얻으려 쓰는 방법은 세 가지임
PC- 방송 보이는 ⓐ인터넷 페이지에서 검사로 얻거나, ⓑ안드로이드 에뮬(블루스택 같은 거)+와이어샤크(관리자 실행) 조합으로 얻음
안드 폰- ⓒ안드 어플 Packet Capture으로 얻음
개인적으로는 ⓐ>ⓑ>ⓒ 순으로 쉽다고 생각함
 
파일 경로를 지정하면 지정된 파일 경로에 받아짐
지정 안 하면 streamlink 실행되는 장소(=현재 폴더 위치)에 자동으로 다운받아 짐
 
streamlink 실행되는 곳은 어디냐면 
명령 프롬프트 처음 열었을 때 보이는 폴더(경로) 주소임
D로 바꾸려면 D: 를 입력하면 됨
 
특정 위치에 다운받고 싶다면 
그 폴더에서 shift 버튼 누르고 빈 곳에 오른 클릭-> 여기에 명령창 열기 한 다음에 streamlink 명령어 입력하면 쉬움
 
이제 영상 사이트별 예제 영상으로 차근차근 다운 받는 모습 보여드리겠음
 
 

반응형

 
 
스트리밍 방식/사이트에 따른 사용 예
 
 
유튜브
 

유튜브 생방송 스트림은 ytarchive로 추출하는 게 나음

 

ytarchive 유튜브 라이브 추출 방법 1 - 다운로드, 설치 - Tip A to Z

 

ytarchive 유튜브 라이브 추출 방법 1 - 다운로드, 설치 - Tip A to Z

ytarchive를 이용하면 youtube live 실시간 방송 시작 시간을 놓치고 나중에 들어가도 시작점부터 녹화할 수 있고, 채널을 모니터링하다가 방송 시작하면 자동으로 추출되게 할 수도 있다

tipatoz.com


유튜브가 제일 쉽기 때문에 유튜브부터 하겠음
 
다운받고 싶은 폴더로 가서 빈칸에 쉬프트 키+오른 클릭

 

 
 
 
여기서 명령 창 열기를 클릭함
 
streamlink "https://www.youtube.com/watch?v=_RvSpacOYcY" best -o "y2.ts"
를 명령 창에 붙여 넣고 엔터를 침
 
만약 유튜브 주소에
https://www.youtube.com/watch?v=_RvSpacOYcY&feature=youtu.be
이거 같이 필요 없는 부분이 덧붙여져 있으면 떼내야 함
여기서는 &feature=youtu.be를 떼냈음
 
best는 최고화질로 받아달라는 거임
유튜브 화질이 360p, 720p, 1080p이 있으면 1080p으로 받음
 
파일명과 확장자는 자기 맘대로 정하면 됨
 

 
도중에 질문 (already exists! Overwite it?)은
이미 이 이름으로 파일 존재함! 덮어쓸겨? 임
응->y 아니->n 쓰고 엔터 치면 됨
 
그럼 추출됨
 
스트림이 종료된다면 프로그램이 자동으로 추출 종료함
스트림이 계속되는데 나는 추출 그만하고 싶다?
그냥 명령창 끄면 됨
그런데 이렇게 하면 파일에 좀 오류가 날 수 있음
 
 
hls 방식 - 라인라이브, 페리스코프 등
 
기본 형태
 
streamlink "hlsvariant://https://어쩌구주소/playlist.m3u8" best -o "파일명.확장자"
 
 

플레이리스트 m3u8 주소 + ts 조각 파일 이면 이거임
 
대부분 실시간 스트리밍 형태

 
실시간 스트리밍이 되고 있는 페이지에서 오른 클릭-
검사- 네트워크(여기서 안 보이면 F5로 새로고침)-m3u8 주소 복사 - 명령어에 알맞게 조합해서 입력
 
크롬에선 검사이고, 파폭에서는 요소 검사였던 거 같음. 익플에서도 있으니까 이거 하려고 안 쓰는 브라우저 깔지 않아도 됨

 

 

1) 라인라이브
 
 
라인라이브는 플러그인 지원 사이트여서 밑에서 처럼 힘들게 m3u8 주소 찾을 필요가 없음
 
 

스트림링크 사용 방법 2-2: 라이브 추출 2️⃣ 플러그인, 스트리밍 프로토콜 (Streamlink) - Tip A to Z

스트림링크의 플러그인 지원 사이트에서의 추출법과 플러그인 미지원 사이트에서의 추출법을 다룬다.

tipatoz.com

 
이 글 보는 게 나음
 
 
밑에 글은 m3u8 주소 찾는 방법 알고 싶을 때 볼 수 있게 남겨놓음
 
 
검사- 네트워크-chunklist.m3u8 복사 - 해당부분 복사 주소 알맞게 바꾸기( playlist, 720으로 바꾸기)-위에 명령어에 끼워넣고 엔터
 
라인라이브 홈페이지 가서 
https://live.line.me/
라이브 방송 아무거나 붙잡고 해보겠음
 
라이브 방송 중인 페이지로 이동함
https://live.line.me/channels/138192/broadcast/7005954
 
크롬의 경우 페이지 오른 클릭-검사 누르거나
F12 버튼을 누름
 
그렇게 나타난 것에서 Network 탭 누름
 

 

chunklist.m3u8가 반복해서 나타날텐데
오른클릭-카피- 카피 링크 주소 누름
그렇게 얻은 주소에서 
chunklist를 playlist로, 
360을 720로 바꿈
 
이렇게 얻은 playlist.m3u8 주소를 명령어에 끼어넣으면 됨
 
streamlink "hlsvariant://https://lss.line-scdn.net/p/live/hgK54i8dqO2VUPCFxcWgnWmhTNQQ7KxkwNW1yUlBKbw9zGxZXa14seko_ElchC381fF4WaVZTZlU6fXw7Kyt1CzJNZFYufXcwMA/720/playlist.m3u8" best -o "linelive1.ts"
 
결과물
 
 
2) 페리스코프(pscp.tv)
 
이제 어떻게 하는지는 다 아실거라고 믿음!
 
똑같음
 
pscp.tv 실시간 스트리밍 되는 곳에서  - 마우스 오른 클릭 - 검사 - 네트워크 - m3u8 주소 복사(ts 조각 파일들 앞쪽에 있음. playlist_짱긴숫자.m3u8) - m3u8 주소 그대로 명령어 형식에 넣고 입력
 

 
streamlink "hlsvariant://https://prod-video-ap-northeast-1.pscp.tv/QoYyYGp3J7ZhVXYaCFCcDGSEpASI-rxJuZ4ha1Boyv5oJYLuyKZouyHKBO8-bghL_mqzkDvFxPUFic5vq54mtw/replay/ap-northeast-1/periscope-replay-direct-prod-ap-northeast-1-public/playlist_16941264263011882927.m3u8" best -o "lotte.ts"
 
 
만약!!! 이런 류를 추출할 때
hlsvariant:// 가 안 먹히면
hls:// 로 바꿔서 써보면 됨
 
 
 
 
rtmp 
 
2021년에 스트림링크에서 rtmp 지원 끊음
stream: remove RTMP and RTMPDump dependency by bastimeyer · Pull Request #4169 · streamlink/streamlink · GitHub
 

 

stream: remove RTMP and RTMPDump dependency by bastimeyer · Pull Request #4169 · streamlink/streamlink

drop RTMP stream implementation drop RTMP plugin drop RTMPDump dependency remove stream.streamprocess and utils.{rtmp,swf} remove "rtmp" from default stream types list remove "rtmp" from player-pas...

github.com

 
rtmpdump나
ffmpeg를 이용해서 추출하면 됨
 
컴맹이 알려주는 ffmpeg 사용법 (tistory.com)

 

컴맹이 알려주는 ffmpeg 사용법

시작 1. 컴맹이라 쓴 거는 컴에 대해 잘 모르는 분들도 할 수 있다 강조하기 위해 쓴 것임. 그리고 컴맹이 맞긴 함. 시우민 덕질하면서 필요해서 배운거 빼면 컴퓨터에 대해서 잘 모름 2. 잘 모르

peche326.tistory.com

 
rtmp 주소는 어떻게 얻냐?
나는 복잡한 건 모르고 idm(internet download manager) 씀
rtmp 스트리밍 하는 페이지에 가면 얘가 자동으로 잡아서 다운로드할 거냐 묻는데
주소만 쏙 빼서 씀
idm으로 생방송 스트림 추출은 별로여서 안 씀
 
 
rtmp라고 별거 없음
 
hls가 hlsvariant:// 나 hls://면
rtmp는 rtmp:// 임 (간. 단.)
 
streamlink "rtmp://주소" best -o "파일명.확장자"
 
이렇게 쓰면 됨
 
 
streamlink "rtmp://198.255.17.18/live?PZGxViR3MwJqcRtphX7hE89EPJ20NpUo-mobile/live_sherming66" best -o "onair.ts"
 
이런 식으로 하면 됨
 
 
 
mixlr
 
검사-네트워크 에서 보면
waterfall 영역에서 계속 길어지는 애가 있음
 
http://listen1.mixlr.com/cfb21b0238a8d60d0ec2558479b8ee1d
형태의 주소임 
 
streamlink "httpstream://http://listen1.mixlr.com/cfb21b0238a8d60d0ec2558479b8ee1d" best -o "mixlr.mp3"
 
명령창에 이런 식으로 넣으면 추출됨
 


 
참고 사이트
 
https://streamlink.github.io/cli.html

반응형