본문 바로가기
개발환경/Tips

youtube-dl로 Youtube에서 MP3 다운로드 시 아티스트와 앨범 아트(meta data) 포함시키는 방법

by Kibua20 2021. 2. 23.

개인적인 취미로 자동차 운전 시 음악을 자주 듣습니다.  에전에는 Android로 개발된 사재 Navigation에 Youbute apk을 설치하여 Bluetooth 테더링으로 스트리밍을 사용했으나, 최근에 기변하여 자동차 회사의 순정 Navigation을 사용하니 스트리밍 서비스가 없어 어쩔 수 없이 Youtube에 올라간 playlist를 MP3로 다운하고 이를 USB 메모리에 담아서 음악을 듣습니다. 

 

Youtube에서 MP3로 다운로드하는 방법은youtube-dl 사용했습니다. 처음에 Youtube에서 다운로드 했던 MP3 음원에는 "아티스트", "앨범", "앨범 아트" 정보가 누락되어 있어 아래와 같이 "정보 없음"으로 표시됩니다.  본 포스팅에서는 youtube-dl로 MP3 다운로드 시 아티스트와 앨범 아트를 추가하는 방법을 설명합니다

 

※ 저작권 있는 영상의 다운로드 자체는 불법까지는 아니지만 배포하면 저작권법 위반이니 꼭 유의해주세요. 

 

 Youtube에서 다운로드 했던 MP3 음원에는 "아티스트", "앨범", "앨범 아트"가 정보가 누락됨

 

참고로, Youtube와 함께 Naver와 카카오 TV 동영상 다운로드 방법은 아래 포스팅을 참고하세요.

 

 

youtube-dl 설치 방법 (요약)

youtube-dl 설치는 Windows, Linux, Mac OS 모두 지원하며, Python 으로 개발되었으며 실행파일(EXE or ELF)만 다운로드하면 사용 가능합니다.  Youtube에 다운로드 받은  영상을 MP3로 추출하기 위해서는  ffmpeg을 같이 설치해야 합니다. 

 

youtube-dl 다운로드 및 설치

1) 우분투 

   우분투에서 $ apt install도 가능하면 youtube-dl은 버그 수정이 많기 때문에 wget으로 최신 버전으로 다운로드하는 것을 추천드립니다.  

    $ sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl

    $ sudo chmod a+rx /usr/local/bin/youtube-dl

 

2) Windows 

    youtube-dl.exe 을 다운로드 PATH 폴더에 복사합니다. 

 

ffmpeg 다운로드 및 설치

1) 우분투에서 설치

    $ sudo apt install ffmpeg

 

2) Windows 에서 설치

    https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z 에서 다운로드하여 압축을 풀고 PATH 폴더에 복사합니다. youtube-dl.exe 다운로드한 ffmpeg.exe를 경로에 위치시키는 것을 추천드립니다.  

 

youtube-dl로 Youtube Playlist를 MP3로 다운로드

youtube-dl는 Youtube에서 Playlist의 분석하여 각각 파일로 다운로드 가능합니다.  다운로드를 원하는 Playlist를 검색해서 아래와 같이 URL을 확인합니다.  아래 예제에서 상단 URL을 복사해 놓습니다. 

 

Youtube에서 Playlist 검색해서 URL 확인

 

동영상을 다운로드하기 위해서는 $ youtube-dl {Youtub URL} 명령어를 사용합니다.  Audio 파일을 추출하는 Default 옵션(-x)인 경우에는 앨범 아트와 아티스트의 meta 정보 없이 다운로드합니다. Meta data를 표시하기 위해서  --add-metadata--embed-thumbnail 옵션을 추가합니다.

 

$ youtube-dl -x {Yotube URL}

  → Playlist의  모든 영상을 Audio파일로 다운로드 (기본 옵션)

 

$ youtube-dl -x -i --audio-format mp3 --audio-quality 192k --embed-thumbnail --add-metadata {Yotube URL}

  → Playlist 의  모든 Video를 다운로드 후에 MP3를 추출하고 meta data를 추가함

 

아래는 위의 Playlist를 MP3로 다운로드하는 예제입니다. 

 youtube-dl -i  -x --audio-format mp3 --audio-quality 192k --embed-thumbnail --add-metadata https://www.youtube.com/playlist?list=PLOHoVaTp8R7dfrJW5pumS0iD_dhlXKv17

 

기본 옵션 대비 추가한 옵션에 대한 설명은 다음과 같습니다. 

-x, --extract-audio   Convert video files to audio-only files(requires ffmpeg/avconv and ffprobe/avprobe)
--audio-quality QUALITY   Specify ffmpeg/avconv audio quality,   insert a value between 0 (better) and 9 (worse) for VBR or a specific bitrate  like 128K (default 5)
--embed-thumbnail    Embed thumbnail in the audio as cover art
--add-metadata  Write metadata to the video file

 

$ youtube-dl -x 명령어을 실행화면은 다음과 같습니다.  Youtube의 Web page를 parsing 하여 Video와 Audio를 포함한 MP4 또는 WebM파일을 다운로드하여 MP3만 추출합니다.  이 과정에서 ffmpeg를 사용해서 영상의 대표 화면을 MP3의 앨범 아트로 저장하고, 음원의 저작자와 앨범 정보를 MP3 tag로 저장합니다.  

youtube-dl -x  명령어을 실행화면

 

youtube-dl의 Default 옵션과 meta data 옵션 사용 시 차이점 확인

youtube-dl의 Default 옵션(-extract audio)으로 다운로드한 mp3과 --add meta, --embed-thumbnail 를 추가한 MP3 파일의 차이점을 확인할 수 있습니다. 

 

  • 제목:  파일명에서 노래 제먹으로 변경
  • 아티스트: 정보 추가됨
  • 앨범명: 정보 추가됨
  • 아트 앨범:  동영상의 대표 화면으로 설정됨 
  • Description내용:  Youtube에 저장된 내용이 meta data로 추가됨

youtube-dl의 Default 옵션과 meta data 옵션 사용 시 차이점 확인
youtube-dl의 Default 옵션과 meta data 옵션 사용 시 차이점 확인

 

국내 자동차 업체의 순정 Navigagtion에서 확인하면 아래와 같이 1) 아티스트 이름, 2) 앨범 이름, 3) 앨범 아트가 정상적으로 표시됩니다. 

 

 Youtube에서 다운로드 했던 MP3 음원에 "아티스트", "앨범", "앨범 아트"를 포함 시킴

 

관련 글

[개발환경/우분투] - 우분투20.04에서 Bluetooth 5.0 USB 동글 설치: Realtek 8716B Chipset

[개발환경/Tips] - Spotify 한국에서 사용하는 방법

[개발환경/Tips] - 네이버 동영상 다운로드 방법 (동영상과 설명 포함)

[모바일 SW 개발/Android] - Android 스마폰을 PC 화면으로 미러링: Mirroid

[개발환경/Tips] - 카카오 TV 1080p 동영상 다운로드: MPEG DASH의 MPD 활용

[개발환경/Tips] - 카카오 TV 동영상 다운로드: m4s 파일 다운로드 방법

[블로그 관리/티스토리 블로그 관리] - 티스토리 블로그에서 구글 서치 콘솔 CLS(0.25 초과)문제 해결법

[모바일 SW 개발/Android] - 파이썬으로 Apk Download 자동화: Selenium기반의 Apk 크롤러

[개발환경/Google Cloud Platform] - 회사에서 방화벽으로 막혀 있는 사이트 우회 방법: SSH tunneling 과 Socks5 활용

[모바일 SW 개발/REST API] - 무료 REST API 테스트 프로그램: Postman (설치, 활용법)

[모바일 SW 개발/REST API] - 공공 데이터 Open API 사용법: 코로나 확진자 현황 API (sample code)

[블로그 관리/티스토리 블로그 관리] - 티스토리 블로그 글을 구글 디스커버에 노출시키는 방법

[개발환경/Web Server] - Website 전체 백업 방법: HTTrack (티스토리 백업에 활용)

[개발환경/우분투] - Docker 개념과 명령어 사용 방법 및 예제

[개발환경/Tips] - OneDrive를 활용한 파일 공유 방법: URL 생성 및 삭제 방법

[모바일 SW 개발/Python] - MobaXterm (Cygwin)에서 Python 및 PIP 설치

[개발환경/Web Server] - 우분투 20.04에서 Web 서버 설치 방법 (apache2, tomcat9)

[개발환경/우분투] - Ubuntu 20.04에서 sshfs 를 이용한 원격 폴더 마운트

[개발환경/윈도우와 WSL] - 윈도우용 MobaXterm - SSH 및 X-Server 지원

[개발환경/우분투] - Ubuntu에서 토렌트 다운로드하기 (Transmission)




댓글