기타

유튜브 영상 오디오 추출하기

쓴웃음 2020. 5. 7. 00:37

일러두기

유튜브(YouTube)에서 영상을 다운로드하는 것은 유튜브의 정책을 위반하는 것입니다. 오로지 자신이 올린 데이터(영상)만 사용 중지전 사본을 백업할 목적으로 다운로드할 수 있습니다.

개요

python에서 youtube_dl 모듈을 이용해 유튜브 영상의 오디오(mp3) 추출(다운로드)하는 방법입니다.

필요한 프로그램

※ 아래의 작업은 Ubuntu18.04(WSL)에서 수행하였습니다.

  • python3와 package manager(pip3)
$ sudo apt install python3 pip3
  • youtube_dl 모듈
$ pip3 install youtube_dl
  • ffmpeg

ffmpeg는 youtube_dl로 다운로드한 영상(.mp4)을 오디오(.mp3)로 변환할 수 있는 도구 입니다.

$ sudo apt install ffmpeg

코드

#!/bin/env python3
# Requires: youtube_dl module
# Requires: ffmpeg
# Usage:
#
# python youtube2mp3.py <URL>, ...
# 
# Example:
# 
# python3 youtube2mp3.py https://www.youtube.com/watch?v=dQw4w9WgXcQ

import youtube_dl
import sys

class MyLogger(object):
    def debug(self, msg):
        pass

    def warning(self, msg):
        pass

    def error(self, msg):
        print(msg)


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

ydl_opts = {
    'format': 'bestaudio/best',
    'postprocessors': [{
        'key': 'FFmpegExtractAudio',
        'preferredcodec': 'mp3',
        'preferredquality': '192',
    }],
    'logger': MyLogger(),
    'progress_hooks': [my_hook],
}

if __name__ == "__main__":
    with youtube_dl.YoutubeDL(ydl_opts) as ydl:
        filenames = sys.argv[1:]
        ydl.download(filenames)

사용법

파이썬 소스코드를 youtube2mp3.py이름으로 저장한 후 오디오를 추출하고자 하는 유트브 영상의 URL과 함께 입력하여 실행합니다.

$ python3 youtube2mp3.py https://www.youtube.com/watch?v=dQw4w9WgXcQ

출처