# URL 을 이용한 YouTube download

## 다운로드

FFmpeg 를 다운로드 받는다.

### 어디서?

[https://github.com/BtbN/FFmpeg-Builds/releases](https://github.com/BtbN/FFmpeg-Builds/releases) 에서 "ffmpeg-master-latest-win64-gpl.zip" 다운로드

[Releases · BtbN/FFmpeg-Builds](https://github.com/BtbN/FFmpeg-Builds/releases)

'C:\\FFmpeg\\bin'  # FFmpeg 설치 경로

인스톨 패키지가 없는 이런 방식을 '포터블(portable) 설치'라고 한다.

1. 파일 준비:

- [https://github.com/BtbN/FFmpeg-Builds/releases](https://github.com/BtbN/FFmpeg-Builds/releases) 에서 "ffmpeg-master-latest-win64-gpl.zip" 다운로드

- 다운로드 받은 zip 파일을 압축 해제

2. 폴더 설정:

- C 드라이브에 'FFmpeg' 폴더 생성 (`C:\FFmpeg`)

- 압축 해제한 파일들 중 'bin' 폴더 안의 모든 파일을 `C:\FFmpeg\bin` 으로 복사

- bin 폴더 안에는 ffmpeg.exe, ffprobe.exe 등의 파일들이 있어야 한다.

3. 환경 변수 설정:

- Windows 키 + R 누르고 'sysdm.cpl' 입력

- '고급' 탭 → '환경 변수' 버튼

- '시스템 변수' 중 'Path' 선택 → '편집' 클릭

- '새로 만들기' → 'C:\FFmpeg\bin' 입력

- '확인' 버튼으로 모든 창 닫기

4. 설치 확인:

- 명령 프롬프트를 새로 열고 (기존 창은 닫고 새로 열어야 함)

- `ffmpeg -version` 입력해서 작동 확인

```javascript
import yt_dlp
import os

# YouTube URL 입력 (여기에 다운로드할 영상의 URL을 입력하세요)
video_url = "https://youtu.be/a-KbevnrbSc?si=s6egDOlVxnQqcUTn"  # 실제 URL로 변경하세요

# 저장할 폴더 경로 설정
output_path = os.path.join(".", "extract_mp3")  # 현재 폴더 아래 extract_mp3 폴더 생성

# 저장 폴더가 없으면 생성
if not os.path.exists(output_path):
    os.makedirs(output_path)
    print(f"저장 폴더가 생성되었습니다: {output_path}")

def download_audio(url, output_path="./"):
    """
    YouTube 영상에서 음성을 추출하여 MP3로 저장합니다.

    Parameters:
    url (str): YouTube 영상 URL
    output_path (str): 저장할 경로
    """
    ydl_opts = {
        'format': 'bestaudio/best',
        'postprocessors': [{
            'key': 'FFmpegExtractAudio',
            'preferredcodec': 'mp3',
            'preferredquality': '192',
        }],
        'outtmpl': os.path.join(output_path, '%(title)s.%(ext)s'),
        'verbose': True,
        'ffmpeg_location': 'C:\\FFmpeg\\bin'  # FFmpeg 설치 경로
    }

    try:
        print("다운로드를 시작합니다...")
        print(f"저장 위치: {output_path}")
        with yt_dlp.YoutubeDL(ydl_opts) as ydl:
            ydl.download([url])
        print("다운로드가 완료되었습니다!")
        return True

    except Exception as e:
        print(f"에러가 발생했습니다: {str(e)}")
        return False

# 메인 실행 부분
if __name__ == "__main__":
    success = download_audio(video_url, output_path)

    if success:
        print("음성 추출이 성공적으로 완료되었습니다.")
        print(f"파일이 다음 경로에 저장되었습니다: {output_path}")
    else:
        print("음성 추출 중 문제가 발생했습니다.")
```

For the site tree, see the [root Markdown](https://slashpage.com/halongboy.md).
