NodeJS를 이용한 유튜브 음원(mp3) 다운로드

2022년 10월 10일
조회수 5
코멘트2

목차

 이 포스팅에서는 NodeJS와 youtube-mp3-downloader 라이브러리를 이용하여 youtube의 영상에서 음원(mp3)만 저장하는 프로그램을 만들어 보도록 하겠습니다.

1. Youtube mp3 downloader 라이브러리 설치

npm을 이용하여 youtube-mp3-downloader를 설치 합니다. 해당 라이브러리의 github주소는 참고 항목에 기재 해 두겠습니다.

$ npm install youtube-mp3-downloader --save

2. ffmpeg 설치

youtube-mp3-downloader 라이브러리를 사용하기 위해서는 영상에서 음원만 변환을 할 수 있도록 ffmpeg를 설치 해줘야 합니다. 본 항목에서는 윈도우와 Linux에서의 ffmpeg를 설치하는 방법에 대해서 알아보도록 하겠습니다.

2-1. Mac OS에서 ffmpeg 설치

 여러분의 환경이 맥OS인경우 터미널에서 다음의 명령어로 ffmpeg를 설치 할 수 있습니다. 대략 설치까지 5분정도 걸립니다.

$ brew install ffmpeg</code>
</pre>

<p></p>

<h2>2-2. Windows에서 ffmpeg 설치</h2>

<p>윈도우는 다음 링크의 문서에서 "<u><strong>환경 변수 편집에서 새로 만들기</strong></u>"까지를 참조 해 주세요.</p>

<p><a href="https://happist.com/577463/윈도우-ffmpeg-설치-및-사용-방법" target="_blank">https://happist.com/577463/윈도우-ffmpeg-설치-및-사용-방법</a></p>

<p></p>

<h2>3. mp3 다운로드 NodeJS 코드</h2>

<p><code>index.js</code>파일을 만들어 다음 코드를 입력 합니다. </p>

<pre><code>var YoutubeMp3Downloader = require("youtube-mp3-downloader");

// YoutubeMp3Downloader 설정
var YD = new YoutubeMp3Downloader({
    "ffmpegPath": "/usr/local/bin/ffmpeg",  // FFmpeg 설치경로
    "outputPath": "/path/to/download",      // 다운로드 받은 파일을 저장할 폴더
    "youtubeVideoQuality": "highestaudio",  // 음원 퀄리티
    "queueParallelism": 2,                  // 다운로드 병렬화
    "progressTimeout": 2000,                // 다운로드 처리 인터벌(밀리초)
    "allowWebm": false                      // WebM에서 다운로드 활성 여부
});
// MP3 다운로드 시작
YD.download("L4zauno7_HE");

YD.on("finished", function(err, data) {
    console.log(JSON.stringify(data));
});

YD.on("error", function(error) {
    console.log(error);
});

YD.on("progress", function(progress) {
    console.log(JSON.stringify(progress));
});

코드 설명을 보자면

  • 1라인: youtube-mp3-downloader 임포트
  • 5~10라인: Youtube mp3 downloader의 옵션. ffmpegPath와 outputPath만 설정 해주셔도 됩니다. 저는 맥OS로 brew를 통한 설치를 하였기에 ffmpegPath를 /usr/local/bin/ffmpeg로 설정 하였습니다.
  • 13라인: 다운로드 받을 Youtube의 영상 코드 입력
  • 15~17라인: 프로그레스(progress)가 완료되었을 경우 호출되는 부분
  • 19~20라인: 프로그레스(progress)중 에러가 발생한 경우 호출되는 부분 
  • 23~25라인: 프로그레스(progress) 진행 상황에 호출되는 부분
댓글 0