Гид по технологиям

Как скачать видео с YouTube на ПК с помощью Python

5 min read Python Обновлено 03 Jan 2026
Скачать видео с YouTube с помощью Python
Скачать видео с YouTube с помощью Python

Скриншот интерфейса загрузки видео с YouTube с помощью Python

Что вы получите

  • Рабочий Python-скрипт, который скачивает выбранное видео с YouTube.
  • Понимание потоков (streams) и значений itag.
  • Интерактивный пример выбора разрешения и автоматическая загрузка.
  • Подсказки по отладке, безопасность и альтернативы.

Предпосылки

  • Базовые навыки работы с терминалом/командной строкой.
  • Установленный Python (3.7+ рекомендуется). Если вы используете macOS, Python может быть уже установлен; на Windows скачайте его с https://python.org.
  • Доступ в интернет и URL нужного видео на YouTube.

Важно: загружайте видео только при наличии прав или если это разрешено законом. Это руководство не поощряет нарушение авторских прав.

Установка и настройка окружения

  1. Создайте рабочую папку для проекта и перейдите в неё:
mkdir youtube-downloader
cd youtube-downloader
  1. Создайте виртуальное окружение и активируйте его.
  • На Windows:
python -m venv venv
venv\Scripts\activate
  • На macOS / Linux:
python3 -m venv venv
source venv/bin/activate
  1. Установите pytube через pip:
pip install pytube

Альтернативы: если у вас возникнут проблемы с pytube, можно использовать yt-dlp (форк youtube-dl) — подробнее в разделе Альтернативы.

Быстрый пример — минимальный скрипт

Этот код показывает минимальный набор действий: импорт, создание объекта YouTube, выбор потока и скачивание.

from pytube import YouTube

URL = "Введите_сюда_URL_видео"
video = YouTube(URL)
stream = video.streams.filter(file_extension='mp4').get_by_itag(22)  # 22 обычно = 720p
stream.download()

Запустите из терминала:

python file_name.py

По умолчанию файл сохраняется в текущий рабочий каталог и получает название, соответствующее заголовку видео на YouTube.

Как просмотреть доступные потоки и itag

pytube предоставляет список потоков для каждого видео — в них указаны формат, разрешение и значение itag. Сначала распечатайте все доступные потоки:

from pytube import YouTube

URL = "Введите_сюда_URL_видео"
video = YouTube(URL)
print(video.streams)

Вы увидите набор объектов Stream с полями itag, mime_type и res. Например: itag=”22” res=”720p” или itag=”18” res=”360p”. Значения itag могут отличаться для разных видео и со временем; всегда проверяйте вывод для конкретного ролика.

Вывод доступных потоков pytube

Вы можете фильтровать по расширению файла:

video_streams = video.streams.filter(file_extension='mp4')
print(video_streams)

Вывод фильтрации потоков по mp4

Интерактивный загрузчик: выбрать itag и скачать

Ниже — расширенный пример, который:

  • показывает потоки в удобном формате,
  • просит пользователя ввести itag,
  • скачивает файл в указанную папку с опцией переименования,
  • обрабатывает базовые ошибки.
from pytube import YouTube
import os

def list_streams(video):
    streams = video.streams.filter(file_extension='mp4').order_by('resolution').desc()
    print("Доступные потоки:")
    for s in streams:
        print(f"itag={s.itag}  res={s.resolution}  fps={s.fps}  progressive={s.is_progressive}  type={s.mime_type}")
    return streams


def main():
    url = input("Вставьте URL видео YouTube: ").strip()
    try:
        yt = YouTube(url)
    except Exception as e:
        print("Не удалось обработать URL:", e)
        return

    print("Заголовок:", yt.title)
    streams = list_streams(yt)

    chosen = input("Введите itag желаемого потока: ").strip()
    stream = yt.streams.get_by_itag(int(chosen))
    if not stream:
        print("Поток с таким itag не найден.")
        return

    output_path = input("Папка для сохранения (оставьте пустым для текущей): ").strip() or os.getcwd()
    filename = input("Имя файла (без расширения, нажмите Enter для имени по умолчанию): ").strip() or None

    try:
        stream.download(output_path=output_path, filename=filename)
        print("Скачано успешно в:", output_path)
    except Exception as e:
        print("Ошибка при загрузке:", e)

if __name__ == '__main__':
    main()

Краткое пояснение: флаг progressive=True означает, что аудио и видео находятся в одном файле (подходит для простого скачивания). Если progressive=False, видео и аудио разделены (DASH streams) и их нужно объединять (например, с помощью ffmpeg).

Прогресс загрузки (колбэк)

Чтобы видеть прогресс, используйте on_progress_callback у YouTube. Пример:

def progress_callback(stream, chunk, bytes_remaining):
    total = stream.filesize
    downloaded = total - bytes_remaining
    percent = downloaded / total * 100
    print(f"Загружено: {percent:.1f}%", end='\r')

yt = YouTube(URL, on_progress_callback=progress_callback)

Этот колбэк вызывается при получении каждого чанка и печатает прогресс в процентах.

Указание каталога и имени файла

Пример с явным указанием имени и каталога:

stream.download(filename = "my_first_youtube_download", output_path = "C:\\Users\\You\\Videos")

На macOS/Linux путь будет выглядеть как “/home/you/Videos” или “./videos”.

Проверка разрешения скачанного файла

После скачивания в файловом менеджере или проводнике щёлкните правой кнопкой по файлу, откройте Свойства → Детали и посмотрите “Высота кадра” — это значение соответствует вертикальному разрешению (например, 720 означает 720p).

Что делать, если поток без аудио (separate audio/video)

Некоторые высокие разрешения возвращают только видео без аудио (progressive=False). В таких случаях можно:

  • скачать аудиопоток отдельно и объединить с видео через ffmpeg;
  • либо выбрать progressive-поток с более низким разрешением.

Пример скачивания аудио и объединения (общая последовательность):

  1. Скачать видео (itag для видео).
  2. Скачать аудио (обычно mime_type содержит “audio”).
  3. Объединить с помощью ffmpeg: ffmpeg -i video.mp4 -i audio.mp4 -c copy output.mp4

Альтернативы и когда pytube не подходит

  • yt-dlp: более устойчивый и активно поддерживаемый инструмент для загрузки видео с большого числа сайтов. Подходит, когда pytube ломается.
  • youtube-dl: исторически популярный, сейчас менее активно обновляется.
  • Браузерные расширения: удобны для пользователей без навыков программирования, но часто менее гибки и могут быть небезопасны.

Когда pytube может не подойти:

  • Если YouTube изменил API/структуру и pytube временно не поддерживает новые изменения.
  • Если вам нужно массовое скачивание с обработкой метаданных и конвертацией — лучше yt-dlp с параметрами.

Практические советы и отладка

  • Если при установке pytube возникают ошибки, попробуйте обновить pip и пересоздать виртуальное окружение.
  • Если при парсинге потоков появляются исключения, убедитесь, что URL корректен и у вас стабильное подключение.
  • Для массовой загрузки добавьте задержки и обработку исключений, чтобы избежать блокировок.
  • Используйте on_progress_callback для визуальной индикации в скриптах без GUI.

Important: некоторые видео защищены или имеют региональные ограничения — такие материалы может быть невозможно скачать.

Юридические и конфиденциальные заметки

  • Загрузка материалов без разрешения правообладателя может нарушать условия YouTube и авторское право. Пользователь несёт ответственность за законность своих действий.
  • Не храните и не распространяйте личные данные третьих лиц без их согласия.

Роль‑ориентированные чеклисты

Разработчик:

  • Установить виртуальное окружение.
  • Проверить работу pytube на тестовом видео.
  • Добавить обработку ошибок и логирование.

Не‑разработчик / пользователь:

  • Скопировать готовый скрипт.
  • Вставить URL и запустить.
  • Проверить папку загрузки.

IT‑администратор:

  • Ограничить права на папки для хранения загрузок.
  • Контролировать использование сетевого трафика при массовой загрузке.

Критерии приёмки

  • Скрипт скачивает указанный файл в выбранный каталог.
  • Размер загруженного файла > 0 байт и воспроизводится в медиаплеере.
  • Разрешение файла соответствует выбранному потоку (проверяется через свойства файла).

Чек-лист для расширения функционала (идеи)

  • Добавить GUI с помощью Tkinter или PyQt.
  • Поддержка пакетной загрузки (список URL в CSV).
  • Автопереименование по шаблону: {author}{title}{itag}.
  • Интеграция с ffmpeg для конвертации и слияния аудио/видео.

Краткое резюме

Python и pytube позволяют быстро собрать простой и удобный загрузчик видео с YouTube. Для большинства задач достаточно распечатать доступные потоки, выбрать нужный itag и вызвать download. Для профессиональных сценариев рекомендуется изучить yt-dlp и механизмы объединения треков через ffmpeg.

Summary:

  • Начните с виртуального окружения и установки pytube.
  • Проверьте доступные потоки и выберите itag для нужного разрешения.
  • Для прогресса используйте on_progress_callback.
  • Рассмотрите yt-dlp и ffmpeg для более сложных случаев.

Social preview suggestion: Заголовок: Скачать видео с YouTube с помощью Python — руководство Описание: Простой скрипт на Python с выбором потока по itag, прогрессом загрузки и советами по отладке.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство