SELF STUDY/Python

[Python] 유튜브 영상 전체 다운로드 | 오디오 파일만 다운로드 | yt_dlp |ffmpeg

호이호이호잇 2024. 8. 10. 15:39
728x90
반응형

 

유튜브 링크를 이용하여 해당 동영상을 오디오 파일로 저장해보겠습니다.

 

 

라이브러리 설치

python 파일 생성 하기 전 필요한 설치 작업은 두 가지!

  • - yt-dlp : 다양한 사이트의 동영상을 다운로드하기 위해 사용하는 소프트웨어
  • - ffmpeg : 다양한 멀티미디어 포맷을 다루는 코덱
brew install yt-dlp
brew install ffmpeg

 

유튜브 영상 다운로드

import yt_dlp

def download_video_with_ytdlp(youtube_url, filename):
    """yt-dlp를 사용하여 YouTube에서 MP4 비디오를 다운로드하고 파일 이름을 반환합니다."""
    ydl_opts = {
        'format': 'bestvideo+bestaudio/best',  # 최고 품질의 비디오와 오디오 형식을 지정
        'outtmpl': f'{filename}.mp4',  # 파일 이름을 지정하고 확장자를 mp4로 설정
        'merge_output_format': 'mp4',  # 비디오와 오디오를 mp4 형식으로 병합
        'ffmpeg_location': '/opt/homebrew/bin/ffmpeg',  # 필요한 경우 FFmpeg 경로 지정
    }

    with yt_dlp.YoutubeDL(ydl_opts) as ydl:
        info_dict = ydl.extract_info(youtube_url, download=True)  # YouTube 정보 추출 및 다운로드
        file_name = ydl.prepare_filename(info_dict).replace('.webm', '.mp4')  # 파일 이름을 mp4로 변경
    return file_name  # 파일 이름 반환

# 예시 사용법
youtube_url = '-'
download_video_with_ytdlp(youtube_url, 'video')  # 비디오 다운로드

 

실행하면

아래와 같이 mp4형식의 영상이 다운로드 되는 것을 볼 수 있다.

내가 테스트로 다운로드 해본 영상은 'https://www.youtube.com/watch?v=olONVwWg97w' 이다.

 

 

 

그런데 만약 영상은 필요가 없고 오디오 파일만 필요한 경우?

유튜브 영상에서 오디오만 파일로 저장

import yt_dlp

def download_audio_with_ytdlp(youtube_url, filename):
    """yt-dlp를 사용하여 YouTube에서 오디오를 다운로드하고 파일 이름을 반환합니다."""
    ydl_opts = {
        'format': 'bestaudio/best',  # 최고 품질의 오디오 형식 지정
        'extractaudio': True,  # 오디오만 추출
        'audioformat': 'wav',  # 오디오 형식을 wav로 지정
        'outtmpl': f'{filename}.%(ext)s',  # 파일 이름 지정 및 확장자 설정
        'postprocessors': [{
            'key': 'FFmpegExtractAudio',  # FFmpeg을 사용하여 오디오 추출
            'preferredcodec': 'wav',  # 선호하는 코덱을 wav로 설정
            'preferredquality': '192',  # 오디오 품질을 192kbps로 설정
        }],
        'ffmpeg_location': '/opt/homebrew/bin/ffmpeg',  # 필요한 경우 FFmpeg 경로 지정
    }

    with yt_dlp.YoutubeDL(ydl_opts) as ydl:
        info_dict = ydl.extract_info(youtube_url, download=True)  # YouTube 정보 추출 및 다운로드
        file_name = ydl.prepare_filename(info_dict).replace('.webm', '.wav')  # 파일 이름을 wav로 변경
    return file_name  # 파일 이름 반환

# 예시 사용법
youtube_url = '-'
download_audio_with_ytdlp(youtube_url, 'audio')  # 오디오 다운로드

 

실행하면,

아래와 같이 audio.wav가 생성되는 것을 볼 수 있다!

728x90
반응형