에루샤
erusya
Back-end Developer
Web Geek
Anime Otaku
에루샤 프로필 이미지
개발

Mac 터미널로 유튜브 다운로드 하기 (yt-dlp)

214 views as of .
우리가 유튜브에서 영상을 찾아보다면 필요에 따라 영상을 다운받고 싶을때가 있다.
이럴때 제일 무난한거는 온라인에서 유튜브 다운로드 서비스를 지원하는 사이트를 찾아서 이용하는건데, 한번이라도 이 방식을 이용해본 사람이라면 해당 사이트가 참 복잡하다라는 생각이 든다.

그도 그럴께 그 사이트들도 유튜브 다운로드를 목적으로 광고든 뭐든해서 비용을 발생시켜야 하기때문에 순수한 기능으로써의 사이트가 되기는 힘들기 때문이다.

이쯤되면 그냥 내가 직접 프로그램이나 유틸리티로 유튜브를 다운받고 싶어할 것이다.
이를 위해서 알아보니 Mac 사용자라면 brew를 통해 유튜브를 다운로드할 수 있는 프로그램을 설치하고 가동 할 수 있다는걸 알게되어 기록을 남기고자 한다.


선행작업 - Homebrew 설치

당연히 Mac 기반 설명이기때문에 맥이 필수이다.
맥은 애플리케이션, 라이브러리 관리를 Homebrew를 통해 실시한다.

먼저 brew가 설치되어있는지 확인해보자.

~ brew --version         
Homebrew 4.3.8Copy

만약 설치가 되어있으면 위에처럼 버전이 나올것이다.
설치가 안되어있다면 아래 명령어로 설치를 진행해주자.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Copy



yt-dlp 설치

이어서 유튜브를 다운로드 시켜줄 라이브러리를 설치해보자

~ brew install yt-dlpCopy

설치가 제대로 되었는지 확인하려면 마찬가지로 아래와 같이 버전 체크를 해보면 된다.

~ yt-dlp --version
2025.01.15Copy

또한 yt-dlp는 ffmpeg의 라이브러리를 많이 가져다 쓰기때문에 ffmpeg도 설치후 버전 확인을 해보는것도 필요하다.

# 설치
~ brew install ffmpeg

# 설치 확인 (버전)
~ ffmpeg -versionCopy


yt-dlp 사용 방법

사용방법은 매우 간단하다. 기능을 호출해주고 유튜브 영상 링크 주소를 파라미터로 아래와 같이 넘겨주면된다.

~ yt-dlp 'https://www.youtube.com/watch?v=szMxReV-unw'

# 주소를 그대로 복붙하면 아래처럼 특수문자 앞에 역슬래쉬(\)가 들어가는경우도있다. 이럴땐 제거해주자.
# yt-dlp 'https://www.youtube.com/watch\?v\=szMxReV-unw'Copy

실제로 위 코드를 실행하면 내 유튜브의 영상을 다운로드되게 해놓았다.

~ yt-dlp 'https://www.youtube.com/watch?v=szMxReV-unw'
[youtube] Extracting URL: https://www.youtube.com/watch?v=szMxReV-unw
[youtube] szMxReV-unw: Downloading webpage
[youtube] szMxReV-unw: Downloading tv player API JSON
[youtube] szMxReV-unw: Downloading ios player API JSON
[youtube] szMxReV-unw: Downloading player 37364e28
[youtube] szMxReV-unw: Downloading m3u8 information
[info] szMxReV-unw: Downloading 1 format(s): 299+251
[download] Destination: 영웅전설 계의 궤적 클리어 인트로 화면 [szMxReV-unw].f299.mp4
[download] 100% of    4.29MiB in 00:00:01 at 2.82MiB/s
[download] Destination: 영웅전설 계의 궤적 클리어 인트로 화면 [szMxReV-unw].f251.webm
[download] 100% of  251.14KiB in 00:00:00 at 618.56KiB/s
[Merger] Merging formats into "영웅전설 계의 궤적 클리어 인트로 화면 [szMxReV-unw].mkv"
Deleting original file 영웅전설 계의 궤적 클리어 인트로 화면 [szMxReV-unw].f251.webm (pass -k to keep)
Deleting original file 영웅전설 계의 궤적 클리어 인트로 화면 [szMxReV-unw].f299.mp4 (pass -k to keep)Copy

이런식으로 현재 터미널 위치에 영상이 다운로드된것을 확인할 수 있다.


오디오만 다운로드

만약에 영상에서 오디오만 다운로드하고싶다면 아래와 같이 파라미터를 추가하면된다.

~ yt-dlp --extract-audio --audio-format mp3 'https://www.youtube.com/watch?v=example'Copy


최고화질로 다운로드

일반적으로 높은화질우선으로 다운로드되는데, 내가 명시적으로 화질을 최고화질로 받고싶다면 아래 처럼 파라미터를 추가하면 된다.

~ yt-dlp -f best 'https://www.youtube.com/watch?v=example'Copy


특정 해상도로 다운로드

반대로 특정 해상도(예를들어 720p)를 지정하려면 아래와 같이 조정한다.

~ yt-dlp -f 'bestvideo[height<=720]+bestaudio/best' 'https://www.youtube.com/watch?v=example'Copy


전체 재생목록 다운로드

만약에 동영상 파일 하나가 아닌 공개된 재생목록의 모든 동영상을 다운로드하려면 아래처럼 재생목록 url로 작동 시키면 된다.

~ yt-dlp -i 'https://www.youtube.com/playlist?list=example'Copy


지역 제한 컨텐츠, 연령제한 컨텐츠, 비공개 컨텐츠 다운로드

만약에 공개 영상이 아닌 모종의 제한이 걸린 컨텐츠를 다운로드하고싶다면 웹사이트에서 유튜브로 로그인되어있는 내 쿠키 데이터를 가져와 이를 기반으로 yt-dlp 으로 다운로드를 요청할 수 있다.

먼저 쿠키데이터를 추출하기위해 크롬이나 파이어폭스에서 아래링크로가 확장프로그램을 설치한다.

Get cookies.txt LOCALLY - Chrome Web Store
Get cookies.txt LOCALLY - Chrome Web Store
Get cookies.txt, NEVER send information outside with open-source
https://chromewebstore.google.com/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc?pli=1

본문 이미지

그리고 유튜브에 접속한 이후 확장프로그램을 클릭해 Export 버튼으로 현재 페이지의 쿠키만 추출하던지, 아니면 Export All 로 브라우저의 모든 쿠키를 추출한다.

그러면 cookie.txt 파일이 생성되어 다운로드될텐데 이 파일을 아래처럼 파라미터로 잡은 후 영상 다운로드를 명령어를 요청한다.

~ yt-dlp --cookies /path/to/cookies.txt 'https://www.youtube.com/watch?v=szMxReV-unw'Copy


결론

원천적으로 유튜브는 영상 다운로드 서비스를 지원하고 있지는 않다.
모든 온라인의 기술이 우회 기술이고, 유튜브 페이지가 내놓는 스트리밍 데이터와 영상 데이터를 모아서 파일로 가공해주는 서비스이다.

당연히 유튜브입장에선 이런 트래픽을 감당하기 싫을꺼고 주기적으로 이런 라이브러리 사용을 막기위해 보안 업데이트를 실시하고있다.

만약에 yt-dlp를 깔아둔지 꽤 지났다면 기존 소스코드의 우회 기능이 막혀있는경우가 많아서 오랜만에 사용한다면 이 라이브러리를 업데이트, 업그레이드하고 사용하는걸 권장한다.
끝!

#유용한사이트
0 개의 댓글
×