YT-DLP Web Player: минимальный плеер для своего хостинга

YT‑DLP Web Player — минимальный веб‑плеер для домашнего сервера. Узнайте, как быстро установить и настроить воспроизведение видео с разных источников.

Не указано
Алексей Кузнецов
Алексей Кузнецов
Системный администратор24 февраля 2026 г.

Введение в YT-DLP Web Player

YT-DLP Web Player — это легковесный веб-интерфейс для утилиты yt-dlp. Он позволяет просматривать и воспроизводить видео и аудио с множества платформ (YouTube, Vimeo, SoundCloud, TikTok и многих других) непосредственно из браузера, не передавая данные сторонним сервисам. Приложение работает на вашем собственном оборудовании, что обеспечивает максимальный контроль над приватностью.

Установка зависимостей

Перед установкой YT-DLP Web Player необходимо установить все необходимые зависимости системы. Это включает Python, FFmpeg, yt-dlp, flask и gunicorn.

sudo apt update
sudo apt install python3 python3-pip ffmpeg
pip3 install yt-dlp flask gunicorn

Прямой запуск (для разработки)

Для тестирования или разработки можно запустить плеер напрямую, без продакшен-настройки.

cd yt-dlp-web-player
python3 app.py

Запуск через Gunicorn (для продакшена)

Для использования в продакшене рекомендуется запускать приложение через Gunicorn, что обеспечит лучшую производительность и стабильность.

cd yt-dlp-web-player
gunicorn --bind 0.0.0.0:8000 --workers 1 app:app

Запуск через Docker

Самый простой способ установки и развертывания YT-DLP Web Player - использовать Docker. Создайте docker-compose.yml файл с указанными параметрами.

version: '3'
services:
  yt-dlp-player:
    image: ghcr.io/hjiangsu/yt-dlp-web:latest
    container_name: yt-dlp-player
    ports:
      - "8000:8000"
    volumes:
      - ./downloads:/app/downloads
    environment:
      - UID=1000
      - GID=1000

Настройка автозапуска через systemd

Чтобы плеер запускался автоматически при загрузке системы, создайте systemd-сервис.

[Unit]
Description=YT-DLP Web Player
After=network.target

[Service]
User=your_user
Group=your_group
WorkingDirectory=/путь/к/плееру
ExecStart=/usr/local/bin/gunicorn --bind 0.0.0.0:8000 --workers 1 app:app
Restart=always

[Install]
WantedBy=multi-user.target

Настройка безопасности

Для доступа из интернета обязательно используйте HTTPS через reverse proxy (Nginx, Apache) и настройте файрвол для ограничения доступа.

# Разрешить доступ только из локальной сети
sudo ufw allow from 192.168.1.0/24 to any port 8000

# Или ограничить доступ до конкретного IP
sudo ufw allow from 192.168.1.100 to any port 8000

Использование API

YT-DLP Web Player предоставляет REST API для интеграции с другими приложениями или автоматизации.

# Получить информацию о видео
curl http://localhost:8000/api?url=https://www.youtube.com/watch?v=VIDEO_ID

# Скачать видео через API
curl -X POST http://localhost:8000/api/download -d "url=https://www.youtube.com/watch?v=VIDEO_ID&format=best"

YT-DLP Web Player - универсальный веб-плеер с минимальным интерфейсом и множеством функций

Введение в YT-DLP Web Player

YT-DLP Web Player — это легковесный веб-интерфейс для утилиты yt-dlp. Он позволяет просматривать и воспроизводить видео и аудио с множества платформ (YouTube, Vimeo, SoundCloud, TikTok и многих других) непосредственно из браузера, не передавая данные сторонним сервисам. Приложение работает на вашем собственном оборудовании, что обеспечивает максимальный контроль над приватностью и не требует постоянного подключения к интернету для уже скачанного контента. Интерфейс минималистичен, но функционален, идеально подходит для развёртывания на домашнем сервере.

Установка и настройка

Подготовка системы

  1. Обязательные зависимости:

    • Python 3.7+ (рекомендуется последняя стабильная версия)
    • FFmpeg (для обработки медиа)
    • yt-dlp (основная утилита)
    • flask (веб-фреймворк для плеера)
    • gunicorn (WSGI-сервер для Flask)

    Установка зависимостей (Debian/Ubuntu):

    sudo apt update
    sudo apt install python3 python3-pip ffmpeg
    pip3 install yt-dlp flask gunicorn
    

Способ 1: Прямой запуск

  1. Скачайте исходный код YT-DLP Web Player с официального репозитория (например, GitHub).
  2. Перейдите в каталог с кодом:
    cd yt-dlp-web-player
    
  3. Запустите веб-сервер напрямую для разработки (не для продакшена):
    python3 app.py
    
  4. Откройте браузер по адресу http://localhost:5000.

Способ 2: Запуск через Gunicorn (рекомендуется для продакшена)

  1. Убедитесь, что все зависимости установлены (см. выше).
  2. Перейдите в каталог с кодом плеера.
  3. Запустите Gunicorn:
    gunicorn --bind 0.0.0.0:8000 --workers 1 app:app
    
  4. Доступ по адресу http://IP_ВАШЕГО_СЕРВЕРА:8000.

Способ 3: Запуск через Docker (самый простой)

  1. Установите Docker и Docker Compose.
  2. Создайте файл docker-compose.yml:
    version: '3'
    services:
      yt-dlp-player:
        image: ghcr.io/hjiangsu/yt-dlp-web:latest
        container_name: yt-dlp-player
        ports:
          - "8000:8000"
        volumes:
          - ./downloads:/app/downloads  # Для сохранения скачанного контента
        environment:
          - UID=1000
          - GID=1000
    
  3. Запустите контейнер:
    docker-compose up -d
    
  4. Доступ по адресу http://IP_ВАШЕГО_СЕРВЕРА:8000.

Настройка после установки

  • Скачивание: В настройках плеера укажите папку для сохранения скачанных файлов (в Docker - через volume).
  • Сервер: В настройках веб-сервера (если используете G/systemd) можно изменить порт, IP-адрес, запустить как службу.
  • Автозапуск: Для systemd создайте файл сервиса (/etc/systemd/system/yt-dlp-player.service):
    [Unit]
    Description=YT-DLP Web Player
    After=network.target
    
    [Service]
    User=your_user
    Group=your_group
    WorkingDirectory=/путь/к/плееру
    ExecStart=/usr/local/bin/gunicorn --bind 0.0.0.0:8000 --workers 1 app:app
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
    Включите автозапуск: sudo systemctl enable yt-dlp-player && sudo systemctl start yt-dlp-player.

Интерфейс и пользовательский опыт

Интерфейс YT-DLP Web Player намеренно минималистичен:

  1. Поле ввода URL: Основное место для вставки ссылки на видео/аудио.
  2. Кнопка "Play": Инициирует загрузку и воспроизведение.
  3. Плеер: Стандартный HTML5-видеоплеер с базовыми элементами управления (воспроизведение/пауза, прогресс-бар, громкость, полноэкранный режим).
  4. Панель информации: Отображает название, длительность, выбранный формат (после анализа).
  5. Панель скачивания: Появляется после анализа, позволяет выбрать формат и начать загрузку.

Пользовательский опыт интуитивен: вставил ссылку, нажал "Play" — плеер подгружает контент и начинает воспроизведение. Нет навязчивой рекламы, лишних кнопок или отслеживания. Поддерживается работа в фоновом вкладке.

Основные функции

  1. Воспроизведение множества форматов: Поддерживает видео (MP4, WebM, AVI и т.д.) и аудио (MP3, OGG, M4A, FLAC).
  2. Автовыбор формата: По умолчанию выбирает оптимальный формат (обычно лучшее качество видео + аудио в одном файле).
  3. Анализ ссылки: Перед воспроизведением/скачиванием анализирует доступные форматы и качества.
  4. Скачивание: Возможность сохранить контент на диск с выбором формата, качества и включением/выключением субтитров.
  5. Поддержка плейлистов: Можно воспроизводить или скачивать целые плейлисты (с настройкой рекурсивности).
  6. История: Можно включить запись истории просмотренных/скачанных ссылок (хранится локально в браузере или на сервере).
  7. Поиск: Интегрированный поиск по YouTube (и другим поддерживаемым источникам).
  8. Управление подкастами: Возможность подписаться на подкаст и скачивать новые выпуски.

Расширенные возможности

  1. Несколько экземпляров: Можно запустить несколько независимых плееров на разных портах для разных пользователей/задач.
  2. API: Предоставляет REST API для интеграции с другими приложениями или автоматизации. Примеры API-запросов:
    # Получить информацию о видео
    curl http://localhost:8000/api?url=https://www.youtube.com/watch?v=VIDEO_ID
    
    # Скачать видео через API
    curl -X POST http://localhost:8000/api/download -d "url=https://www.youtube.com/watch?v=VIDEO_ID&format=best"
    
  3. Аутентификация: Поддержка базовой HTTP-аутентификации для ограничения доступа (настроить в Gunicorn/Nginx):
    server {
        listen 80;
        server_name ваш_домен;
        location / {
            auth_basic "Restricted";
            auth_basic_user_file /etc/nginx/htpasswd;
            proxy_pass http://localhost:8000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    
  4. Интеграция с браузером: Можно создать ярлык или расширение для быстрого доступа к плееру.
  5. Кастомизация: Некоторые аспекты интерфейса могут быть изменены через конфигурационные файлы. Для изменения цветовой схемы редактируйте файл static/css/custom.css:
    :root {
        --primary-color: #3a86ff;
        --secondary-color: #8338ec;
        --background-color: #121212;
    }
    
  6. Парсинг сложных URL: Корректно обрабатывает ссылки с параметрами, сокращенные ссылки (bit.ly).
  7. Поддержка Live-стримов: Возможность просмотра прямых трансляций.

Безопасность и приватность

Это ключевое преимущество решения:

  1. Локальные данные: Все данные (кэш, история, скачанные файлы) хранятся на вашем сервере, а не передаются в облако.
  2. Отсутствие отслеживания: Веб-плеер не содержит аналитики, трекеров или рекламы. Данные о вашем просмотре не уходят никуда.
  3. Конт доступа: Вы сами решаете, кто имеет доступ к плееру (через сеть или только с localhost).
  4. HTTPS: Для доступа из интернета обязательно используйте обратный прокси (Nginx, Apache) с настройкой SSL/TLS (Let's Encrypt). Запускать на localhost или доверенной внутренней сети можно и без HTTPS.
  5. Файрвол: Настройте файрвол (ufw, iptables) так, чтобы порт плеера был доступен только необходимым IP-адресам или только из локальной сети:
    # Разрешить доступ только из локальной сети
    sudo ufw allow from 192.168.1.0/24 to any port 8000
    
    # Или ограничить доступ до конкретного IP
    sudo ufw allow from 192.168.1.100 to any port 8000
    
  6. Обновления: Регулярно обновляйте yt-dlp (pip3 install --upgrade yt-dlp) и сам плеер для закрытия потенциальных уязвимостей.

Сравнение с альтернативами

ХарактеристикаYT-DLP Web PlayerVLC Web InterfaceJellyfin/PlexNewPipe (Android)
Мин. интерфейс✅ Да✅ Да❌ Нет✅ Да
Источники контента✅ Очень широкие❌ Локальные✅ Локальные✅ Ограниченные
Приватность✅ Максимальная✅ Высокая⚠️ Средняя✅ Высокая
Требования к железу✅ Низкие✅ Низкие❌ Высокие❌ Только Android
Скачивание✅ Да❌ Нет❌ Нет✅ Да
Установка✅ Простая✅ Простая❌ Сложная❌ Только APK
API/Автоматизация✅ Да❌ Нет✅ Да❌ Нет

Вывод: YT-DLP Web Player — лучший выбор для минималистичного, универсального и приватного плеера с фокусом на доступность контента из интернета и скачивание. Jellyfin/Plex лучше для медиатеки, NewPipe — для мобильных устройств, VLC — для локальных файлов без веб-интерфейса.

Оптимизация производительности

  1. Использование кэша: Настройте Gunicorn/Nginx для кэширования статических файлов (CSS, JS) и API-ответов:
    # Пример конфигурации для Nginx
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }
    
  2. Параллельные загрузки: yt-dlp уже использует параллелизм. Для больших файлов можно увеличить количество потоков в настройках:
    yt-dlp --concurrent-fragments 16 -f best "URL"
    
  3. FFmpeg оптимизация: Убедитесь, что FFmpeg скомпилирован с поддержкой нужных кодеков. Используйте аппаратное ускорение (NVENC, QSV, VAAPI) для декодирования, если доступно:
    # Пример для NVIDIA
    yt-dlp --postprocessor-args "ffmpeg:-c:v h264_nvenc" -f best "URL"
    
  4. Ограничение одновременных подключений: Настройте Gunicorn (--workers) и Nginx (limit_conn_module) для предотвращения перегрузки сервера при высоком трафике:
    http {
        limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
        
        server {
            location / {
                limit_conn conn_limit_per_ip 5;
                proxy_pass http://localhost:8000;
            }
        }
    }
    
  5. Сетевые настройки: Оптимизируйте буфера в ядре (net.core.rmem_max, net.core.wmem_max) для больших потоков:
    # Временная настройка
    sudo sysctl -w net.core.rmem_max=134217728
    sudo sysctl -w net.core.wmem_max=134217728
    
    # Постоянная настройка (в /etc/sysctl.conf)
    net.core.rmem_max=134217728
    net.core.wmem_max=134217728
    
  6. Использование CDN: Для статичных файлов можно подключить простой CDN (Cloudflare, S3 + CloudFront).
  7. Регулярная очистка: Настройте cron-задачу для периодической очистки временных файлов, оставляемых yt-dlp:
    # Добавить в crontab (crontab -e)
    0 3 * * * find /путь/к/временным/файлам -name "*.tmp" -mtime +1 -delete
    

Решение распространенных проблем

  1. Ошибка "No video formats found":
    • Обновите yt-dlp: pip3 install --upgrade yt-dlp
    • Проверьте, доступен ли URL вручную в браузере.
    • Попробуйте другой браузер или очистите кэш/куки.
    • Для некоторых платформ может потребоваться ключ API (например, для YouTube) — настройте его в конфиге:
      yt-dlp --apiclient-id "ВАШ_ID" --apiclient-secret "ВАШ_СЕКРЕТ" "URL"
      
  2. Воспроизведение тормозит/рывками:
    • Проверьте скорость сети между сервером и клиентом.
    • Включите аппаратное ускорение в настройках браузера и в параметрах FFmpeg (если доступно).
    • Попробуйте выбрать другой, более легкий формат видео (меньшее разрешение, кодек H.264 вместо HEVC).
    • Увеличьте буфер плеера (если есть такая настройка).
  3. Gunicorn не стартует/падает:
    • Проверьте логи: journalctl -u yt-dlp-player.service (systemd) или вывод в консоли.
    • Убедитесь, что путь к директории с кодом (WorkingDirectory) и путь к gunicorn (ExecStart) верны.
    • Проверьте права на файлы директории (должны быть доступны пользователю, под которым запущена служба).
    • Убедитесь, что все зависимости (flask, gunicorn, yt-dlp) установлены в окружении этого пользователя.
  4. Доступ из интернета не работает (Docker):
    • Проверьте, что контейнер слушает 0.0.0.0:8000 (не 127.0.0.1:8000).
    • Убедитесь, что порт 8000 проброшен в docker-compose.yml (ports: - "8000:8000") и открыт в файрволе (ufw allow 8000).
    • Если используете reverse proxy (Nginx), проверьте его конфигурацию (proxy_pass, listen).
  5. Скачивание не работает:
    • Проверьте права на целевую папку для скачивания (chmod 755 /path/to/downloads, chown your_user:your_group /path/to/downloads).
    • Убедитесь, что место на диске не заполнено.
    • Проверьте логи выполнения (если есть настройка логирования для скачивания) на ошибки.

Заключение

YT-DLP Web Player — это мощное и приватное решение для создания универсального медиаплеера у себя дома. Его минималистичный интерфейс скрывает за собой мощный движок yt-dlp, обеспечивающий доступ к контенту из десятков источников. Установка проста, особенно с Docker. Основные преимущества — полная приватность, контроль над данными и отсутствие зависимости от облачных сервисов. Несмотря на кажущуюся простоту, плеер обладает расширенными возможностями для кастомизации и автоматизации. При правильной настройке безопасности и оптимизации производительности он станет незаменимым инструментом для любителя медиаконтента, ценящего свободу и конфиденциальность. Регулярное обновление yt-dlp и самого плеера гарантирует стабильную работу и поддержку новых платформ.

Поделиться:TelegramX / TwitterVK