개인적인 취미로 자동차 운전 시 음악을 자주 듣습니다. 에전에는 Android로 개발된 사재 Navigation에 Youbute apk을 설치하여 Bluetooth 테더링으로 스트리밍을 사용했으나, 최근에 기변하여 자동차 회사의 순정 Navigation을 사용하니 스트리밍 서비스가 없어 어쩔 수 없이 Youtube에 올라간 playlist를 MP3로 다운하고 이를 USB 메모리에 담아서 음악을 듣습니다.
Youtube에서 MP3로 다운로드하는 방법은youtube-dl 사용했습니다. 처음에 Youtube에서 다운로드 했던 MP3 음원에는 "아티스트", "앨범", "앨범 아트" 정보가 누락되어 있어 아래와 같이 "정보 없음"으로 표시됩니다. 본 포스팅에서는 youtube-dl로 MP3 다운로드 시 아티스트와 앨범 아트를 추가하는 방법을 설명합니다.
※ 저작권 있는 영상의 다운로드 자체는 불법까지는 아니지만 배포하면 저작권법 위반이니 꼭 유의해주세요.
참고로, Youtube와 함께 Naver와 카카오 TV 동영상 다운로드 방법은 아래 포스팅을 참고하세요.
- [개발환경/Tips] - Youtube 다운로드 방법 (광고 없는 오픈 소스 기반 tool 사용)
- [개발환경/Tips] - 네이버 동영상 다운로드 방법 (동영상과 설명 포함)
- [개발환경/Tips] - 카카오 TV 동영상 다운로드: m4s 파일 다운로드 방법
- [개발환경/Tips] - 카카오 TV 1080p 동영상 다운로드: MPEG DASH의 MPD 활용
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-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의 Default 옵션과 meta data 옵션 사용 시 차이점 확인
youtube-dl의 Default 옵션(-extract audio)으로 다운로드한 mp3과 --add meta, --embed-thumbnail 를 추가한 MP3 파일의 차이점을 확인할 수 있습니다.
- 제목: 파일명에서 노래 제먹으로 변경
- 아티스트: 정보 추가됨
- 앨범명: 정보 추가됨
- 아트 앨범: 동영상의 대표 화면으로 설정됨
- Description내용: Youtube에 저장된 내용이 meta data로 추가됨
국내 자동차 업체의 순정 Navigagtion에서 확인하면 아래와 같이 1) 아티스트 이름, 2) 앨범 이름, 3) 앨범 아트가 정상적으로 표시됩니다.
관련 글
[개발환경/우분투] - 우분투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 를 이용한 원격 폴더 마운트
댓글