스트림링크로 진행 중인 라이브 방송 추출하는 법을 다룹니다. 이번 글은 기본적인 방법 위주입니다. 그리고 옵션 설명도 다룹니다.
이전 글
스트림링크 사용 방법 1: 다운로드, 설치 (Streamlink)
스트림링크로 진행 중인 라이브 방송 추출하는 법
cmd 창 여는 법
ytarchive 유튜브 라이브 추출 방법 2 – 첫 부분부터 추출, 채널 모니터링, 추출 예약 (사용법)
위 글에서 해당 단락 참고 (해당 키워드로 ‘페이지에서 찾기’ 또는 ‘Ctrl+F’)
기본적인 방법
cmd 창에서 명령어를 입력하면 된다
명령어의 형태는 다음과 같다
streamlink [옵션] <URL> [품질]
<URL>: 추출할 라이브 방송의 url
[품질]: 추출할 방송의 품질 (예: best, worst, 720p, 1080p 등)
best=최고 품질
worst=최저 품질
쉼표로 구분된 리스트로 대체 품질 지정이 가능하다 (아래 예제 참고)
streamlink [옵션] <URL> 720p,480p,best
위의 경우 가능한 한 720p로 추출하나 그것이 없으면 480p, 둘 다 안되면 가능한 최고 품질로 추출한다
[옵션]
파일 출력 옵션
-o [저장할 파일 이름 및 경로]: 추출한 파일을 저장할 위치와 파일 이름
–output [저장할 파일 이름 및 경로]로 해도 된다
streamlink -o [저장할 파일 이름 및 경로] <URL> [품질]
“파일경로\파일명.확장자” or “파일명.확장자” 와 같은 형태로 쓰면 된다
이 옵션을 사용해야 추출한 스트림이 저장된다
간단하게 추출하려면 옵션 중 이것만 넣어도 된다
streamlink -o "output.ts" <URL> best
cmd 창에서 cd 명령어(디렉토리 변경 명령어)를 쓰기 싫다면 특정 폴더에서 cmd 창을 여는 걸 추천한다
특정 폴더에서 cmd 창을 여는 법은 아래 링크를 참고하기 바란다
ytarchive 유튜브 라이브 추출 방법 2 – 첫 부분부터 추출, 채널 모니터링, 추출 예약 (사용법)
위 글에서 해당 단락 참고 (해당 키워드로 ‘페이지에서 찾기’ 또는 ‘Ctrl+F’)
메타데이터 변수를 이용하여 폴더나 파일의 이름을 정할 수도 있다
streamlink -o "~/recordings/{author}/{category}/{id}-{time:%Y%m%d%H%M%S}.ts" <URL> [품질]
파일 시스템 사용 권한이 허용하는 경우 존재하지 않는 디렉터리 및 하위 디렉터리가 만들어진다
스트림링크는 다음 CLI 인수(arguments)에서 사용할 수 있는 다양한 메타데이터 변수를 지원한다
▪ –title
▪ –output
▪ –record
▪ –record-and-pipe<메타데이터 변수>
id : 스트림의 고유 ID로, 내부 숫자 ID 또는 임의 문자열
plugin : 플러그인 이름
title : 스트림의 제목으로, 일반적으로 짧은 설명 텍스트
author : 스트림의 작성자, 예를 들어 채널 또는 방송사 이름
category : 스트림의 범주, 예를 들어 플레이 중인 게임의 이름, 음악 장르 등
game : category의 Alias(별칭)
url : 스트림의 확인된 URL
time : 현재 타임스탬프
스트림 전송 옵션
–stream-segment-attempts [ATTEMPTS]
각 세그먼트를 다운로드하기 위해 몇 번 시도할지 정하는 옵션
기본값: 3
–stream-segment-threads [THREADS]
세그먼트를 다운로드하는 데 사용되는 스레드 풀의 크기
최솟값은 1이고 최댓값은 10
기본값: 1
HLS 옵션
–hls-live-edge [SEGMENTS]
HLS 라이브 스트림에서 몇 개의 세그먼트를 다운로드할지 결정하는 값
기본값: 3
SEGMENTS는 다운로드할 세그먼트의 개수를 나타낸다
이 값을 높이면 세그먼트의 크기가 더 커지고, 이를 통해 라이브 스트림에서 더 많은 데이터를 다운로드할 수 있다
이 값이 높을수록 세그먼트를 더 오래 기다려야 하므로, 더 많은 대기 시간이 발생할 수 있다
–hls-live-restart
가능한 한 스트림의 제일 앞부분(또는 처음 부분)부터 추출한다
유튜브와 같은 dash 방식에서는 안 먹힌다
ytarchive에서는 되니까 유튜브는 ytarchive로 하자
ytarchive 유튜브 라이브 추출 방법 1 – 다운로드, 설치
HTTP 옵션
–http-proxy HTTP_PROXY
WebSocket 연결을 포함하여 모든 HTTP 및 HTTPS 요청에 사용할 HTTP 프록시
예: –http-proxy “http://hostname:port/”
–http-cookie KEY=VALUE
각 HTTP 요청에 추가할 쿠키
반복하여 여러 쿠키를 추가할 수 있다
여러 쿠키 추가 예시:
streamlink --http-cookie 'key1=value2' --http-cookie 'key2=value2' <URL> 품질
쿠키 찾는 법 [deleted by user] : Streamlink (reddit.com)
–http-header KEY=VALUE
각 HTTP 요청에 추가할 헤더
여러 헤더를 추가하기 위해 반복할 수 있다
더 많은 명령어를 보려면 스트림링크 명령어 페이지로
Command-Line Interface – Streamlink 5.3.1 documentation
추출 도중에 멈추는 법
실행 중인 cmd 창에서 “Ctrl + C” 키를 누르면 추출을 중지시킬 수 있다
“Ctrl + C” 키를 누르면 현재 진행 중인 작업이 즉시 중지되고, cmd 창으로 돌아가게 된다
“Ctrl + C” 키를 눌러서 스트림링크를 중지하면, 추출된 파일의 일부가 손상될 가능성이 있으므로, 추출 작업이 완료될 때까지 기다렸다가 종료하는 것이 좋다
플러그인 지원 사이트
현재 내장된 플러그인과 지원하는 URL 및 기능 목록은 아래 링크에서 확인할 수 있다
Plugins – Streamlink 5.3.1 documentation
Description: 사이트 설명
URL: 지원하는 사이트 주소 형태
Type: 라이브(live), VOD 중 어떤 걸 지원하는지 써놨다. 스트림링크의 주된 초점은 라이브 스트림이기 때문에 VOD 지원은 제한적이다
Arguments(인수): 플러그인 옵션
사이트 이름만 써놓자면 다음과 같다
abematv, adultswim, afreeca, albavision, aloula, app17, ard_live, ard_mediathek, artetv, atpchallenger, atresplayer, bbciplayer, bfmtv, bigo, bilibili, blazetv, bloomberg, booyah, brightcove, btv, cbsnews, cdnbg, ceskatelevize, cinergroup, clubbingtv, cmmedia, cnews, crunchyroll, dailymotion, dash, delfi, deutschewelle, dlive, dogan, dogus, drdk,
earthcam, euronews, facebook, filmon, foxtr, galatasaraytv, goltelevision, goodgame, googledrive, gulli, hiplayer, hls, http, htv, huajiao, huya, idf1, invintus, kugou, linelive, livestream, lnk, lrt, ltv_lsm_lv, mdstrm, mediaklikk, mediavitrina, mildom, mitele, mixcloud, mjunoon, mrtmk, n13tv, nbcnews, nhkworld, nicolive, nimotv, nos, nownews, nrk, ntv,
okru, olympicchannel, oneplusone, onetv, openrectv, pandalive, picarto, piczel, pixiv, pluto, pluzz, qq, radiko, radionet, raiplay, reuters, rtbf, rtpa, rtpplay, rtve, rtvs, ruv, sbscokr, showroom, sportal, sportschau, ssh101, stadium, steam, streamable, streann, stv, svtplay, swisstxt,
telefe, tf1, trovo, turkuvaz, tv360, tv3cat, tv4play, tv5monde, tv8, tv999, tvibo, tviplayer, tvp, tvrby, tvrplus, tvtoya, twitcasting, twitch, useetv, ustreamtv, ustvnow, vidio, vimeo, vinhlongtv, vk, vkplay, vlive, vtvgo, wasd, webtv, welt, wwenetwork, youtube, yupptv, zattoo, zdf_mediathek, zeenews, zengatv, zhanqi
플러그인 지원 여부에 따라 url 쓰는 난이도가 달라진다
따라서 추출할 영상 사이트의 플러그인이 있는지 알아보고 명령어를 작성할 필요가 있다
글이 길어져서 다음 글에 이어 쓰겠다
다음 글
스트림링크 사용 방법 2-2: 라이브 추출 2️⃣ 플러그인, 스트리밍 프로토콜 (Streamlink)
관련 글