최근 수정 시각 : 2022-04-26 11:57:15

youtube-dl

1. 개요2. DMCA 테이크다운과 부활3. GUI 프론트엔드
3.1. youtube-dl-gui3.2. Tartube3.3. YoutubeDL-Material3.4. 그 외
4. 사용법
4.1. 파이썬에서 사용하기 용례

1. 개요

파일:홈페이지 아이콘.svg
파일:GitHub 아이콘.svg

youtube-dl은 유튜브 다른 사이트의 동영상을 다운로드하는 오픈 소스 소프트웨어이다. GitHub에서 현재도 활발히 개발되고 있으며, 성능 면에서는 타 소프트웨어의 추종을 불허한다. 몇몇 유튜브 다운로드 소프트웨어는 이 youtube-dl을 기반으로 돌아간다. 현재는 Youtube 동영상 다운로드를 미끼로 랜섬이나 바이러스를 배포하는 사이트가 많다. 그래서 오픈 소스로 개발하고 있는 youtube-dl은 더 매력적이다.

가장 큰 문제는 CLI 기반이다. 개발자가 아닌 이상 일반인은 CLI 기반 소프트웨어를 거의 쓸 일이 없기 때문에 당황할 수도 있지만, 문법이 그렇게 어려운 것이 아니기 때문에 조금만 공부하면 된다. Python을 같이 이용하면 수십개의 재생목록에서 특정 영상(예고편이나 미리보기 등)을 제외하고 특정 언어의 자막을 받고 이름을 내가 원하는 형식으로 바꾸는 등 생각하는 모든 작업을 한방에 할 수 있다.
아예 이것으로 내가 구독하고 있는 채널에 새 영상이 업로드할 때마다 자동으로 다운로드하는 서버를 만드는 사람도 있다. 우리나라는 거의 전국에서 인터넷이 양호하지만 자주 끊기거나 속도가 너무 느린 곳은 대용량 파일을 받는데 이 방법을 의외로 자주 쓴다. VPS 코어 수마다 네트워크 제한이 있기는 하지만 구글 클라우드 VPS에서 유튜브 영상을 다운로드하면 수백메가 속도가 나오는데 이렇게 받고 rclone 같은 걸로 내 컴퓨터에 다운로드한다. 인터넷이 너무 느린 경우, 중간에 다운로드가 중단되는 경우가 많기 때문이다.

윈도우 기반에서는 exe 파일 하나를 다운로드하여 환경변수에 등록하면 되고, mac이나 linux는 패키지 관리자로 설치하면 된다. 윈도우에서도 Linux용 Windows 하위 시스템을 이용하여 리눅스 버전 youtube-dl을 설치해서 사용할 수도 있다. CLI 작업은 Bash에서 일괄적으로 처리하고 싶은 사람이라면 그렇게 하는 것이 편리할 수도 있다.

기본적으로 youtube-dl -F (영상주소)로 내가 받고 싶은 영상의 다운로드 옵션을 확인한다. (영상 화질, 음질) 그리고 youtube-dl -f (옵션) (영상주소)로 다운로드를 하면된다. 영상주소 대신 재생목록을 넣으면 한꺼번에 받을 수 있고 -i옵션을 넣으면 중간에 다운로드가 불가해도(국가차단, 없는 영상 등) 자동으로 다음 영상을 다운로드한다.

말이 youtube-dl이지 웬만한 영상 호스팅 사이트(트위치, 네이버 TV, vlive.tv, 판도라,카카오 tv 등)을 지원한다. 처음에는 youtube 다운로드 프로그램이였는데, 기능이 점점 늘어나고 있다. Github Issue에 내가 원하는 사이트 지원을 해달라 올리면 시간이 좀 걸리지만 반영이 되기도 한다. 지원하는 사이트 목록

유튜브 프리미엄 콘텐츠 다운로드도 된다. Youtube-dl에는 로그인 옵션이 있기 때문에, 로그인한 상태에서 다운로드를 진행하면 Youtube Premium 콘텐츠를 받을 수 있다. 개인이 소장용으로 프리미엄 컨텐츠를 받는 것까지는 크게 문제가 되지 않지만, 많은 사람과 공유하거나, 공개된 곳에 게시하거나 판매할 경우, 엄연한 저작권법 위반에 해당되니 주의할 것.

2021년 6월 6일 이후 한동안 업데이트가 되지 않다가, 12월 17일 한번 업데이트 후 또 업데이트가 멈춰져 있다. 일부 영상의 다운로드가 매우 느린 속도로 진행되다가 멈추는 등 비정상적이다.

그나마 youtube-dl을 포크하여 업데이트하고 있는 yt-dlp는 2022년 3월 9일 기준, 지속해서 최신 버전을 올리면서 좀 더 안정적인 다운로드 효율을 보이고 있다.

2. DMCA 테이크다운과 부활

2020년 10월 24일 기준 youtube-dl GitHub 리포지토리가 RIAA[1]한테 DMCA 테이크다운을 당하였다. # 당연히 관련 커뮤니티는 전부 다 뒤집어지며 README.md에 예시로써 명시된 3개의 곡 때문에 프로젝트를 엎어버릴 수 있다면 해외나 국내나 다음은 Chromium을 DMCA 테이크다운을 걸자고 드립치는 중.

Codesicks 명의로써 DMCA 테이크다운이 걸린 몇 시간 후에 바로 대응 #을 시작했다.

DMCA로 인해 막힌 것을 반대하는 의미로 기존에 생성되있던 Gitea 미러 저장소 링크 #를 공유하고 있으며, 심지어 중국판 GitHub인 Gitee에까지 youtube-dl이 올라와 있다.

이 와중에 DMCA 자체 리포지토리[2]에 youtube-dl 소스코드가 올라오는 일이 발생했다. # 아카이브 아카이브(웨이백 머신) GitHub 측에서 발견하고도 수정하지 않겠다(won't fix)고 선언한 취약점을 이용한 공격으로 알려졌다. #

유튜브 측에서는 이 사건 이후 본격적으로 동영상 추출 방지 대책을 강화한 것으로 보인다. 일부 동영상들을 youtube-dl로 다운받으려 하면 "오류: JS 플레이어에서 추출이 불가능합니다"라는 메시지가 뜨며 동영상 추출이 막힌다. # 다만 이것도 뜨는 때와 안 뜨는 때가 있는 것으로 보이며 youtube-dl의 포크인 youtube-dlc에서 상당 부분 해결했다.

2020년 11월 17일 기준 youtube-dl github 저장소가 복구되었다. 'youtube-dl이 기술적 보호 조치를 우회하지 않는다'는 전자 프런티어 재단 공식 서한에 입각하여 복원되었다. 깃허브는 DMCA 섹션 1201 (저작권 보호 시스템 우회) 검토 과정 개선 예정, 주장이 모호할 경우 개발자 편에 설 예정, 개발자 보호 펀드에 100만 달러(약 11억 원)를 기부하겠다고 밝혔다. 관련 공지

3. GUI 프론트엔드

3.1. youtube-dl-gui

공식 버전: 홈페이지/ 소스 코드
oleksis의 포크: 홈페이지/ 소스 코드

CLI 사용이 어려운 사람들을 위해서 GUI인 youtube-dl-gui도 존재한다.

youtube-dl-gui 는 Windows 뿐만 아니라 리눅스에도 설치가 가능하며 python으로 FFmpeg와 RTMPDump 등을 활용해서 개발하였다. GUI 프로그램이라 CLI 보다 사용하기 쉬우며 안정성 또한 많이 개선된 것 같다. Windows 10에서 실행 시 폴더 권한 액세스 에러가 발생하는 경우도 있으나 이는 '제어된 폴더 액세스를 통해 앱 허용' 에 youtube-dl.exe와 ffmpeg.exe를 추가하면 사용 가능하다.

명칭으로 youtube-dl-gui와 youtube-dlG가 혼용되고 있다.

2015년에 만들어진 버전 0.3.8을 끝으로 새 버전이 나오지 않고 있다. 그래서 oleksis라는 다른 개발자가 프로젝트를 포크하여 유지시키고 있기는 하지만 현재는 Tartube가 더 선호되는 편.

3.2. Tartube

공식 사이트
소스 코드(github)
소스 코드(sourceforge)
youtube-dl-gui를 기반으로 여러 잡다한 기능들을 추가한 프론트엔드. Classic Mode를 선택하면 youtube-dl-gui처럼 사용할 수 있다.

youtube-dl-gui와는 달리 youtube-dl과 ffmpeg가 동봉되어 있지 않지만, 첫 실행 시에 자동으로 같이 설치한다. youtube-dl-gui에서 에러가 발생했던 동영상도 Tartube에서는 다운로드가 가능하다.

버전 2.3.110부터 youtube-dlc의 지원을 중단하고 그 대신 yt-dlp를 지원하기 시작했다.

윈도우 버전 한정으로, yt-dlp를 사용할 경우, 수정->시스템 환경 설정->Downloaders에 들어가서 'Install without dependencies'를 활성화하고 업데이트해줘야 정상 설치된다.

3.3. YoutubeDL-Material

Github
리눅스용으로, 서버를 이용하는 사람들이 많이 설치한다. 또한 도커를 지원하여 윈도우에서도 도커를 이용한 설치가 가능하다!

웹브라우저를 통해 GUI 접속이 가능하며, 다운받고 싶은 유튜브 영상 웹페이지에서 북마크를 클릭하는 것만으로 영상을 다운로드 하는 기능도 지원한다.
youtube-dl과 youtube-dlc 및 yt-dlp를 지원하며, 원하는 다운로더를 선택하여 사용할 수도 있다.
curl, ffmpeg, wget 등 에이전트를 변경할 수도 있다.

nightly에서 한국어도 지원된다.

3.4. 그 외

리눅스 진영에서도 youtube-dl 을 기반으로 한 GUI 프로그램인 Video Downloader가 개발되고 있다. 우분투 20.04 버전에서는 우분투 소프트웨어 센터를 통해서 설치 가능하고 동영상 URL만 입력하면 동영상 또는 MP3 파일로 다운로드 가능하다.

Youtube 사이트에서만 동작하는 것이 아니고, 국내 네이버 TV, 트위터에서도 URL만 입력하면 동영상 다운로드가 가능하다.

4. 사용법

사용하기 전에 ffmpeg 바이너리 파일을 미리 받아서 youtube-dl.exe와 같은 폴더에 넣어두자.[3] youtube-dl이 유튜브를 받을 때[4] 영상과 소리를 따로 받아서 나중에 합치기 때문에 ffmpeg이 필요하다. 아래의 예시 외에 도움말에 더 많은 옵션 정보가 있으니 참고. 혹은 영어로 구글 검색하면 reddit 등에서 쉽게 질문글을 찾아볼 수 있다.
  • 일반적인 동영상을 최선화질, 최선 음질로 다운받을 때 (기본 옵션)
    youtube-dl <동영상 주소> or <재생목록 주소>
  • 저화질 동영상을 다운받을 때
    youtube-dl -f 18 <동영상 주소> or <재생목록 주소>[추가설치]
  • 고화질 동영상을 다운로드 받을때( 고화질 동영상과 음성파일을 다운 후 합성한다.)
    아래 명령어는 windows cmd 창에서 실행한 결과이다.
    powershell, bash등을 이용하면 --default-search "ytsearch" 옵션을 빼고 실행하여도 다운된다.
    youtube-dl -F --default-search "ytsearch" 'https://youtu.be/TJcKYUTaBtg'를 실행하면 아래와 같이 번호가 출력되며
    251 webm audio only tiny 141k , opus @160k (48000Hz), 1.64MiB
    ......
    248 webm 1920x804 1080p 1822k , vp9, 30fps, video only, 12.74MiB
    이렇게 두 번째로 큰 번호를 '+'로 붙여서 실행하면 최상의 결과를 얻을 수 있다.
    youtube-dl -f 248+251 --default-search "ytsearch" 'https://youtu.be/TJcKYUTaBtg'[추가설치]
{{{[youtube:search] query "'https://youtu.be/TJcKYUTaBtg'": Downloading page 1
[download] Downloading playlist: 'https://youtu.be/TJcKYUTaBtg'
[youtube:search] playlist 'https://youtu.be/TJcKYUTaBtg': Collected 1 video ids (downloading 1 of them)
[download] Downloading video 1 of 1
TJcKYUTaBtg: Downloading webpage
[download] Destination: Introducing NVIDIA DGX A100-TJcKYUTaBtg.f248.webm
[download] 100% of 12.74MiB in 00:01
[download] Destination: Introducing NVIDIA DGX A100-TJcKYUTaBtg.f251.webm
[download] 100% of 1.64MiB in 00:00
[ffmpeg] Merging formats into "Introducing NVIDIA DGX A100-TJcKYUTaBtg.webm"
Deleting original file Introducing NVIDIA DGX A100-TJcKYUTaBtg.f248.webm (pass -k to keep)
Deleting original file Introducing NVIDIA DGX A100-TJcKYUTaBtg.f251.webm (pass -k to keep)
[download] Finished downloading playlist: 'https://youtu.be/TJcKYUTaBtg'}}}
  • Opus로 인코딩된 음원을 다운로드 받아 Ogg로 저장할 때 (youtube-dl이 있는 폴더에 ffmpeg가 있어야 함)[7]
    youtube-dl -o <출력 파일> -f 251 <동영상 주소> & ffmpeg -i <출력 파일> -c copy <Ogg로 저장할 파일 이름.ogg>[추가설치]
  • 병합 포맷을 선택할 때
    youtube-dl --merge-output-format <컨테이너 포맷> <동영상 주소> or <재생목록 주소>[추가설치]
    <컨테이너 포맷>에 들어갈 대표의 것:mkv 등
  • 소리만 다운로드 받을때
    youtube-dl -x --audio-format mp3 <동영상 주소> or <재생목록 주소>[10]
  • 최고 품질의 mp3[11] + 메타데이터 + 썸네일을 mp3 앨범 커버로 쓰기[추가설치]
    youtube-dl -f 251 --extract-audio --audio-format mp3 --audio-quality 0 --add-metadata --embed-thumbnail -o <출력 파일> <동영상 주소>
  • 한 언어만 자막 같이 다운받기
    youtube-dl --write-sub --sub-lang <언어> <동영상 주소> or <재생목록 주소> or youtube-dl -f 22 --write-sub --sub-lang <언어> <동영상 주소> or <재생목록 주소>
    <언어>에 들어갈 대표의 것:ko=한글,en=영어 등
  • 모든 언어 자막 다 다운받기
    youtube-dl --write-sub --all-sub <동영상 주소> or <재생목록 주소> or youtube-dl -f 22 write-sub all-sub <동영상 주소> or <재생목록 주소>
  • 자막만 다운받기
    youtube-dl --skip-download --write-sub --sub-lang <언어> <동영상 주소> or <재생목록 주소>
    youtube-dl --skip-download --write-sub --all-sub <동영상 주소> or <재생목록 주소>
    <언어>에 들어갈 대표의 것:ko=한글,en=영어 등
  • 최신버전으로 자기 자신을 업데이트
    youtube-dl -U
  • 출력파일명을 지정
    youtube-dl -o "<경로>\%%(title)s.%%(ext)s <동영상 주소>"
    %%(title)s : 영상의 제목
    %%(ext)s : 출력형식에 따른 확장자
  • 모든 플레이리스트를 각 폴더 별로 분리해서 받기 예시. 유튜브 주소를 끝이 playlists로 끝나는 채널의 플레이리스트 주소로 써야 한다.
    youtube-dl -o “%(uploader)s/%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s” https://www.youtube.com/c/채널이름/playlists
  • 이미 다운 받은 영상은 제외하고 받으려면 archive 옵션을 켜고 다운을 받아서 한 번 기록을 해둔다. 그러면 다음 번에 받을 때도 archive 옵션을 켜고 받으면 이미 기록된 파일을 읽어서 그 영상을 제외하고 받는다. 채널에 새로 올라온 동영상만 받고 싶을 때 쓸 수 있다.
    youtube-dl --download-archive archive.txt
  • 에러났을 때 중단하지 않고 다음 영상 받기
    youtube-dl -ciw
    아래 옵션 설명 참고
    -i, --ignore-errors 에러 넘기고 다음 영상 받기
    -w, --no-overwrites 이미 영상 파일이 있을 경우 다시 받지 않고 넘기기
    -c, --continue 일부만 받은 파일 다운로드 재개하기

4.1. 파이썬에서 사용하기 용례

pip install --upgrade youtube-dl
등으로 youtube-dl 설치 후에, 다음 코드 사용하면 간단하게 받을 수 있다. 옵션 목록은 다음 링크 참고. #

from __future__ import unicode_literals
import youtube_dl

def my_hook(d):
    if d['status'] == 'finished':
        print('Done downloading, now converting ...')

ydl_opts = {
    'download_archive': 'archive.txt',
    'ignoreerrors': True,
    'nooverwrites': True,
    'format': 'bestvideo[height<=1080]+bestaudio/best[height<=1080]/best',       
    'outtmpl': '저장 경로 템플릿',        
    'noplaylist' : False,       
    'progress_hooks': [my_hook],  
}

with youtube_dl.YoutubeDL(ydl_opts) as ydl:
    ydl.download(['유튜브 링크 주소'])



[1] 미국 음반 산업 협회, 한국으로 치면 한국음악저작권협회와 유사한 단체이다. [2] 원래는 월별 투명성 보고서를 보관하던 곳이다. [3] 리눅스 유저는 FFmpeg 패키지를 설치하면 된다. [4] 유튜브 DASH기술을 도입한 후 720p 이상의 동영상은 소리가 포함되어있지 않다. [추가설치] FFmpeg나 avconv가 설치 되어 있어야 한다. https://github.com/BtbN/FFmpeg-Builds/releases [추가설치] FFmpeg나 avconv가 설치 되어 있어야 한다. GitHub_BtbN/FFmpeg-Builds [7] Opus로 인코딩된 음원을 안드로이드 폰에서 재생하려면 Ogg 컨테이너로 리팩해야 정상적으로 재생된다. 그러나 안드로이드 10부터는 Opus 확장자도 지원한다. [추가설치] [추가설치] [10] \-\-audio-quality 태그로 오디오의 품질을 설정할 수 있다. 0(Best)~9(Worst)로 쓰거나(VBR) 192k 등의 비트레이트를 적으면 된다. [11] 256kbps 가변 비트레이트 [추가설치]



파일:CC-white.svg 이 문단의 내용 중 전체 또는 일부는 문서의 r2247에서 가져왔습니다. 이전 역사 보러 가기
파일:CC-white.svg 이 문단의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
[ 펼치기 · 접기 ]
문서의 r2247 ( 이전 역사)
문서의 r ( 이전 역사)