혼자 운전할 때는 팟캐스트를 주로 듣는다. 하지만 동승자가 있을 때는 분위기를 잡기 위해 음악을 틀어두는 편이다. 유튜브에 분위기 좋은 음악이 많은 데, 유튜브를 mp3 로 변환할 수 있는 웹사이트가 많지만, 지저분한 사이트가 많아 사용하기 꺼림칙하다. 그래서 이 포스팅에서는 파이썬 라이브러리 youtube_dl 과 ffmpeg 으로 유튜브 영상 다운로드와 mp3 파일을 변환하는 방법을 알아보고자 한다. 본래 유튜브에서는 특정 영상은 다운로드를 받을 수 없게 해두었다. 그래서 다른 라이브러리(예: pytube)를 사용할 때, 403 에러같은 게 뜨게 되지만 여기서 사용하는 라이브러리 ydl_opts 로 민감한 영상도 제한 없이 받을 수 있다. 아래 예시 코드를 보자.

import os
import subprocess
import youtube_dl
# 다운로드 받고 싶은 음악의 유튜브 주소를 적어준다.
url = 'https://www.youtube.com/watch?v=JGwWNGJdvx8'
ydl_opts = {} # 필요하다면 옵션을 여러가지 사용할 수 있다. 사용법은 https://github.com/ytdl-org/youtube-dl 를 참고하자.
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
    ydl.download([url])
# 다운로드 받은 webm 파일을 리스트에 저장한다.
file_list = os.listdir('.')
video = [file for file in file_list if file.endswith(".webm")]
# 파일 하나하나 모두 mp3 로 변환한다.
for v in video:
    s = v.split('.')[0]+'.mp3'
    cmds = ['ffmpeg', '-i', v,'-vn', '-ab', '192K', '-y', s]
    subprocess.Popen(cmds)
    print('Converting',v,'to',s)

 

이 라이브러리를 사용하면 유튜브 외에도 비메오나 카카오티비, 네이버티비 등에서도 얼마든 영상을 다운로드 받을 수 있다.

Posted by 공돌이pooh
,