---
title: 'Организация YouTube-стрима на Linux: альтернативны OBS для виртуальных серверов | Zomro'
description: 'Как организовать сервер для потокового вещания, какие возможности предоставляет альтернативное программное обеспечение к OBS...'
image: 'https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/seo%40server-panel.net/2024/12/13/2024-12-13-110809_q50.jpg'
---

![opened image]()

  * [Zomro](https://zomro.com/rus/)
  * [Полезные статьи](https://zomro.com/rus/blog/articles/)
  * Организация YouTube-стрима на Linux: альтернативны OBS для виртуальных серверов 



# Организация YouTube-стрима на Linux: альтернативны OBS для виртуальных серверов

13-12-2024

Современные площадки для стриминга, YouTube и его альтернативы, приобрели большое значение в роли средств для взаимодействия, образования и производства контента. К сожалению, такие классические средства как OBS не всегда возможно использовать на виртуальных серверах, тем более в среде Linux. В данном материале мы обсудим, как организовать сервер для потокового вещания, какие возможности предоставляет альтернативное программное обеспечение к OBS, а также как правильно сконфигурировать трансляцию на платформе YouTube.

## **Настройка сервера для трансляции Youtube**

Для успешной организации трансляции необходимо тщательно настроить сервер, чтобы он был способен выдерживать нагрузку и гарантировать бесперебойную передачу данных. Вот ключевые моменты, которые необходимо учесть при подготовке.

**1\. Минимальные технические требования сервера**

Стриминг может потребовать значительных ресурсов, в зависимости от качества и разрешения видео. Рекомендуемые параметры:

  * **Процессор (ЦП)** : сервер должен иметь, по крайней мере, 2 виртуальных процессора (vCPU), а для трансляции в 1080p лучше выбрать от 4 ядер и выше, чтобы избежать перегрузки. Процессоры с поддержкой AVX-расширений будут плюсом, так как они ускоряют обработку видео.

  * **Оперативная память (ОЗУ)** : 4 ГБ — минимально необходимый объем для трансляций 720p, а для 1080p рекомендуется 8 ГБ и выше, особенно при высоком битрейте.

  * **Диск** : SSD-хранилище предпочтительнее для быстрого доступа к данным, а также для записи стримов. Объем диска зависит от продолжительности трансляций и их количества.

  * **Пропускная способность сети** : высокая скорость исходящего трафика — один из критических параметров. Для трансляции в HD разрешении (1080p) рекомендуется канал не менее 5 Мбит/с, для 4K — от 20 Мбит/с. Рекомендуется выбирать сервер с неограниченной пропускной способностью или тарифный план с высоким лимитом.




**2\. Выбор подходящего дистрибутива Linux**

Для работы с видео- и аудиопотоками важен стабильный дистрибутив Linux. Наиболее популярные дистрибутивы для этих задач:

  * **Ubuntu Server** (20.04 LTS или выше) — предоставляет широкую поддержку софта и имеет простую систему управления пакетами APT.

  * **Debian** — подходит для стабильных серверных решений и имеет низкое потребление ресурсов.

  * **CentOS/AlmaLinux** — поддерживает стабильность и безопасность, но требует использования Yum и RPM для установки пакетов.




Также желательно использовать LTS (долгосрочную поддержку) версии, так как они обеспечивают стабильность и обновления безопасности.

**3\. Базовая настройка безопасности**

Защита сервера необходима, чтобы предотвратить несанкционированный доступ и обеспечить безопасность трансляции:

  1. **Настройка SSH-доступа** :

     * Установите аутентификацию по ключам и отключите вход по паролю для защиты от брутфорс-атак.

     * Измените порт SSH на нестандартный (например, 2222), чтобы уменьшить вероятность атак по умолчанию.

  2. **Firewall** :



  * Используйте ufw (Uncomplicated Firewall) для простого управления правилами:
    
    
    sudo ufw allow 22/tcp  # или другой порт для SSH
    sudo ufw allow 1935/tcp  # порт для RTMP-потока
    sudo ufw enable



  * Закройте все ненужные порты и оставьте только те, которые необходимы для трансляции и управления сервером.



  3. **Мониторинг ресурсов** :

     * Установите инструменты, такие как htop для мониторинга процессора и памяти и iftop для анализа сетевого трафика. Это поможет вовремя обнаружить перегрузку и быстро реагировать на возможные проблемы.

     * Для мониторинга сетевого трафика и узких мест в пропускной способности используйте nload или vnStat, чтобы понять, достаточно ли текущей пропускной способности для вашей трансляции.

  4. **Автоматическое обновление безопасности** :



  * Включите автоматические обновления безопасности, чтобы поддерживать актуальную защиту:
    
    
    sudo apt install unattended-upgrades
    sudo dpkg-reconfigure -plow unattended-upgrades



  5. **Защита от DDoS-атак** :



  * Если вы планируете стрим для большого количества зрителей, обязательно сконфигурируйте защиту от DDoS-атак с применением специализированных средств, например, Fail2Ban, для минимизации нежелательных подключений:
    
    
    sudo apt install fail2ban




**4\. Формирование изолированного пространства**

Чтобы эффективно контролировать зависимости и снизить вероятность конфликтов, целесообразно создать изолированное пространство, используя виртуальные окружения или контейнеры:

  * **Виртуальная среда:** идеальна для работы с библиотеками и модулями, особенно когда в качестве инструмента для трансляции применяются скрипты на Python:
    
    
    sudo apt install python3-venv
    python3 -m venv stream_env
    source stream_env/bin/activate



  * **Docker-контейнеры:** для обеспечения значительной изоляции и возможности масштабирования, применяйте Docker для внедрения приложений. Это крайне эффективно в принятии непростых решений, где имеется множество взаимосвязей.




**5\. Рекомендации по масштабированию**

Для более стабильной трансляции и возможности работы с большой аудиторией рассмотрите варианты масштабирования:

  1. **Сервисы CDN** : интеграция с Content Delivery Network (например, Cloudflare) поможет распределить нагрузку и снизить требования к полосе пропускания.

  2. **Мультисерверные конфигурации** : при необходимости можно использовать несколько серверов для разделения потоков, где один сервер будет захватывать и обрабатывать видео, а другие — распределять его среди зрителей.




**6\. Заключительные рекомендации**

Перед началом трансляции рекомендуется провести тестирование сервера и всех настроек, чтобы избежать прерываний:

  * **Тестовые трансляции** : создайте закрытую трансляцию на YouTube для проверки стабильности и качества видео.

  * **Мониторинг ресурсов в реальном времени** : на этапе тестов отслеживайте ресурсы, используя htop или glances, чтобы понять, справляется ли сервер с текущими параметрами трансляции.




## **Обзор программных альтернатив OBS для Linux**

Приведите обзор программных альтернатив OBS, которые подходят для Linux и могут работать на виртуальных серверах:

  * **FFmpeg** – легковесный и мощный инструмент для захвата и передачи видео. Плюсы: гибкость и возможность настройки параметров; минусы: необходимость работы через командную строку.

  * **GStreamer** – мультимедийный фреймворк, используемый для создания потоков и медиа-сервисов. Плюсы: масштабируемость и возможность детализированной настройки; минусы: сложность настройки для новичков.

  * **SimpleScreenRecorder** – хотя изначально создан для записи, он также поддерживает базовую потоковую передачу. Подходит для легких трансляций и требует минимальной настройки.

  * **Restream.io (через RTMP)** – сервис, позволяющий проводить трансляции на нескольких платформах.




**Настройка и установка необходимого ПО**

Сейчас мы рассмотрим два варианта установки программного обеспечения для трансляций.

  1. **Установка FFmpeg**




Убедитесь, что установленная версия поддерживает необходимые кодеки:
    
    
    sudo apt install ffmpeg

  
![](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/seo%40server-panel.net/2024/12/13/2024-12-13-110809_q50.jpg)

**1.1. Настройка виртуального экрана (для серверов без графического интерфейса)**

На виртуальном сервере, где нет физического экрана, можно использовать **Xvfb** :
    
    
    sudo apt install xvfb

  
![](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/seo%40server-panel.net/2024/12/13/2024-12-13-110855_q50.jpg)

xvfb-run -s "-screen 0 1920x1080x24" ffmpeg …

**1.2. Настройка RTMP-сервера (опционально)**

Если вы планируете запускать стрим с собственного сервера, установите и настройте Nginx с модулем RTMP:
    
    
    sudo apt install nginx libnginx-mod-rtmp

  
![](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/seo%40server-panel.net/2024/12/13/2024-12-13-110941_q50.jpg)

Добавьте следующие строки в /etc/nginx/nginx.conf:
    
    
    rtmp {
        server {
            listen 1935;
            application live {
                live on;
                record off;
            }
        }
    }

  
![](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/seo%40server-panel.net/2024/12/13/2024-12-13-111022_q50.jpg)

Перезапустите Nginx:
    
    
    sudo systemctl restart nginx

  1. **Установка GStreamer**




Для установки GStreamer и его основных плагинов выполните следующие команды:
    
    
    sudo apt install -y gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav

  
![](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/seo%40server-panel.net/2024/12/13/2024-12-13-111059_q50.jpg)

### **Проверка установки GStreamer**

После установки убедитесь, что GStreamer работает:

gst-launch-1.0 --version

**3\. Дополнительные утилиты** :

  * Установка screen (sudo apt install screen -y) или tmux (sudo apt install tmux -y) для запуска процессов в фоновом режиме, что позволит сохранить трансляцию активной после завершения SSH-сессии.

  * Настройка логирования для мониторинга производительности.




### **Создание и конфигурация трансляции**

Сейчас мы рассмотрим поэтапный процесс создания трансляции на YouTube при помощи ПО для трансляций:

  1. **Настройка ключа трансляции** :




Чтобы получить ключ трансляции, достаточно перейдите на[ _YouTube_](https://www.youtube.com) и войти в свою учетную запись, а затем нажать на изображение профиля в правом верхнем углу и выбрать **YouTube Studio** (или **Творческая студия YouTube**).

![](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/seo%40server-panel.net/2024/12/13/2024-12-13-111143_q50.jpg)

Ключ трансляции скрыт и передавать его не следует никому. В нашем случае мы его показывает и сбрасываем. Далее в коде вместо STREAM_KEY нужно будет вам ключ.

  1. **FFmpeg** :




Пример команды для трансляции с использованием FFmpeg, указав важные параметры, такие как битрейт и разрешение:
    
    
    ffmpeg -f x11grab -s 1920x1080 -i :0.0 -f alsa -i default -c:v libx264 -preset veryfast -maxrate 3000k -bufsize 6000k -pix_fmt yuv420p -g 50 -c:a aac -b:a 160k -ar 44100 -f flv rtmp://a.rtmp.youtube.com/live2/STREAM_KEY

  2. **GStreamer** :




Пример команды для захвата видео и аудио и передачи их на YouTube через RTMP:
    
    
    gst-launch-1.0 v4l2src ! videoconvert ! x264enc bitrate=3000 ! flvmux ! rtmpsink location="rtmp://a.rtmp.youtube.com/live2/STREAM_KEY"

  
![](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/seo%40server-panel.net/2024/12/13/2024-12-13-111220_q50.jpg)

**Тестирование стрима перед запуском**

Для тестирования можно обойтись такими способами:

  * **Просмотр предварительного просмотра** в YouTube Studio, чтобы убедиться, что поток стабилен.

  * **Мониторинг нагрузки сервера** с помощью htop и iftop.

  * Настройка тестового трансляционного URL для закрытого просмотра.




**Советы по оптимизации и устранению задержек**

Давайте рассмотрим практические рекомендации по улучшению производительности:

  1. **Оптимизация битрейта и разрешения** :

     * Битрейт определяет объем данных, передаваемых за секунду. Высокий битрейт улучшает качество, но требует большей пропускной способности.  
Например:

       1. Для 720p при 30 fps рекомендуется 2500–4000 Kbps.

       2. Для 1080p при 60 fps — 4500–9000 Kbps.

     * Настройте битрейт в соответствии с возможностями вашего интернет-соединения. Используйте команду speedtest-cli для проверки скорости.




**Разрешение:**

  * Чтобы определить необходимое разрешение экрана и качества видео, стоит отталкиваться от ваших задач, а также ориентироваться на целевую аудиторию. К примеру:

    * 720p (1280x720) — идеально соответствует потребностям большинства ваших зрителей и снижает серверную нагрузку.

    * 1080p (1920x1080) — нуждается в большем пропускном объеме и количестве ресурсов.



  2. **Применение предустановок кодека** :




Кодек x264 предоставляет возможность выбирать между эффективность обработки и качеством изображения. 

Например:  
**ultrafast** : обеспечивает минимальную нагрузку на процессор, однако качество остается на среднем уровне.  
**fast** и **medium** : представляют собой оптимальный компромисс, подходящий для большинства стриминговых задач.  
**slow** : гарантирует наивысшее качество, но требует увеличенных ресурсов.

Образец конфигурации в FFmpeg:  
ffmpeg -i input.mp4 -preset fast -b:v 4000k output.mp4

  3. **Устранение задержек** :

     * Проверка сети и возможное использование низколатентных настроек (например, в FFmpeg параметр -tune zerolatency).

     * Обновление драйверов и библиотек на сервере для совместимости с последними версиями ПО.

  4. **Минимизация использования сторонних процессов** :

     * Отключите ненужные службы и оставьте фоновое логирование только критически важной информации.




**Частые ошибки и способы их устранения**

Запуск трансляции на сервере Linux может сопровождаться рядом технических трудностей, особенно если сервер и программы были недавно настроены. Рассмотрим самые распространённые ошибки и предложим способы их устранения.

**1\. Ошибка соединения с сервером стриминга**

**Описание:** Когда происходит попытка запуска стрима, сервер сталкивается с проблемами подключения к вещательным платформам, таким как YouTube или Twitch, что приводит к появлению сообщения об ошибке соединения.

**Возможные факторы и способы их устранения** :

  * **Некорректный URL-адрес или ключ потока** : Вам следует удостовериться в правильности введенного вами URL для стрима и потокового ключа, предоставленного вашим сервисом.



  * **Закрытый порт RTMP** : Необходимо убедиться в доступности порта RTMP (обычно 1935) для исходящих подключений. для этого нужно воспользоваться командой:
    
    
    sudo ufw allow 1935/tcp



  * **Ошибки, связанные с DNS:** Порой неполадки появляются из-за неправильной работы сервера DNS. В настройках сети вашего сервера попробуйте указать публичные DNS-серверы, такие, как Google (8.8.8.8 и 8.8.4.4).




**2\. Высокая нагрузка на процессор и задержки**

**Описание** : В процессе стрима могут возникать значительные задержки, замедления или перегрузка процессора, что приводит к низкому качеству трансляции.

**Возможные факторы и способы их устранения** :

  * **Недостаток ресурсов сервера** : Проверьте использование ресурсов с помощью htop или top. Если сервер перегружен, попробуйте снизить разрешение или битрейт потока. Например, для 720p уменьшите битрейт до 2-3 Мбит/с.



  * **Определение более эффективного кодека:** Некоторые кодеки нуждаются в большем количестве ресурсов по сравнению с другими. Рассмотрите возможность применения кодека libx264, который предлагает отличное качество при эффективном расходе ресурсов:  
ffmpeg -i input.mp4 -c:v libx264 -preset veryfast -b:v 3000k -maxrate 3000k -bufsize 6000k output.mp4

  * **Установка приоритета для процесса** : Вы можете установить более высокий приоритет для процесса обработки, чтобы ему выделялось больше системных ресурсов. Для этого воспользуйтесь командой nice:  
nice -n -10 ffmpeg ...




**3\. Падение стрима из-за нестабильного подключения**

**Описание** : Трансляция может прерываться из-за плохой работы сети или потерянного подключения.

**Возможные факторы и способы их устранения** :

  * **Конфигурация автоматического восстановления соединения** : При использовании ffmpeg возможно установить автоматическое восстановление соединения в случае его разрыва. Внесите следующие параметры:  
-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5



  * **Настройка дополнительного интернет-канала:** В случае наличия резервного интернет-канала стоит организовать маршрутизацию сети так, чтобы при отключении основного весь трафик перенаправлялся через запасное подключение.




**4\. Трудности с качеством изображения (плохая четкость, размытие)**

**Описание** : Стандарт качества трансляции не удовлетворяет требований, наблюдаются артефакты или изображение выглядит нечетким.

**Возможные факторы и способы их устранения** :

  * **Низкий битрейт** : Проверьте текущий битрейт трансляции. Если он слишком низкий, увеличьте его в настройках. Например, для 1080p рекомендуется битрейт от 4 до 6 Мбит/с.

  * **Неправильные настройки кодека** : Попробуйте изменить настройки кодека. Для улучшения качества используйте пресет -preset slow вместо -preset veryfast, если сервер справляется с нагрузкой.



  * **Оптимизация буферного размера** : Задайте размер буфера в ffmpeg, чтобы сгладить поток:  
-bufsize 6000k




**5\. Ошибка доступа к аудио- или видеоустройствам**

**Описание** : При запуске трансляции возникает ошибка, связанная с доступом к аудио- или видеоустройству на сервере.

**Возможные факторы и способы их устранения** :

  * **Отсутствие доступа к устройству** : Убедитесь, что процесс ffmpeg имеет права доступа к устройству. Возможно, потребуется добавить пользователя в нужную группу:
    
    
    sudo usermod -aG video $(whoami)

  * **Проблемы с виртуальными устройствами** : При стриминге на удалённом сервере, где отсутствует физическое оборудование, используйте виртуальные устройства. Например, для захвата видео с экрана можно установить xvfb:
    
    
    sudo apt install xvfb

  * xvfb-run -s "-screen 0 1280x720x24" ffmpeg ...




**6\. Ошибки кодирования при использовании ffmpeg**

**Описание** : При попытке запустить трансляцию ffmpeg выводит сообщение об ошибке кодирования, и трансляция не начинается.

**Возможные факторы и способы их устранения** :

  * **Отсутствие поддержки кодека** : Проверьте, что установлен нужный кодек для ffmpeg. Возможно, потребуется перекомпилировать ffmpeg с поддержкой дополнительных кодеков.



  * **Неверные параметры кодирования** : Убедитесь, что все параметры кодирования указаны правильно. Например, для H.264 кодека настройка может быть следующей:  
ffmpeg -f x11grab -s 1280x720 -i :0.0 -c:v libx264 -preset fast -b:v 3000k -f flv rtmp://youtube.com/live




**7\. Низкая частота кадров (FPS) в трансляции**

**Описание** : Частота кадров в трансляции ниже заявленного значения, из-за чего видео может выглядеть «рваным».

**Возможные факторы и способы их устранения** :

  * **Недостаточная мощность процессора** : Снижение FPS может происходить из-за ограничений CPU. Уменьшите нагрузку, используя менее ресурсоемкий кодек или снизьте разрешение.



  * **Настройка FPS вручную** : Если ffmpeg не устанавливает FPS автоматически, добавьте параметр -r:  
ffmpeg -i input.mp4 -r 30 ...




**8\. Проблемы с синхронизацией аудио и видео**

**Описание** : Во время трансляции возникает рассинхронизация аудио и видео, из-за чего звук отстает или опережает изображение.

**Возможные факторы и способы их устранения** :

  * **Синхронизация аудио и видео** : Применяйте параметр -async в ffmpeg, для автоматической синхронизации звуковой дорожки используйте следующую команду:  
ffmpeg -i input.mp4 -c:v libx264 -c:a aac -strict -2 -async 1 output.flv

  * **Настройка задержки звука вручную** : Если требуется, вы можете самостоятельно внести задержку, используя параметр -itsoffset:  
ffmpeg -itsoffset 0.5 -i input.mp4 -c copy output.flv




**9\. Ограничения ширины полосы интернет-соединения**

**Описание** : При ограниченной пропускной способности интернет-соединения могут происходить регулярные сбои стрима.

**Решения** :

  * **Уменьшение битрейта:** Снизьте битрейт, чтобы передача данных соответствовала доступной пропускной способности.

  * **Буферизация** : Применяйте буферизацию для сглаживания изменений в скорости потока:  
ffmpeg -i input.mp4 -b:v 2500k -maxrate 2500k -bufsize 5000k output.flv




**Итог**

Несмотря на то что OBS является сильным и востребованным решением для стриминга, можно успешно организовать потоковую передачу на виртуальных серверах Linux и без него, применяя универсальные инструменты, такие как FFmpeg или GStreamer. Корректная конфигурация и испытания помогают улучшить качество и надежность трансляции, даже когда ресурсы виртуальных серверов ограничены.

Похожие статьи

[SRE-методика стандартизации логов](https://zomro.com/rus/blog/articles/561-sre-log-standardization-methodology) [API - Взаимодействие с Image](https://zomro.com/rus/blog/articles/487-api-interaction-with-image) [Скрипт установки China Proxy Server на Ubuntu 22.04](https://zomro.com/rus/blog/articles/495-script-to-install-china-proxy-server-on-ubuntu-2204) [API - Операция Delete](https://zomro.com/rus/blog/articles/467-api-operation-delete) [Микрокеширование nginx+apache и нюансы конфигурации](https://zomro.com/rus/blog/articles/511-microcaching-nginx-apache-and-configuration-nuances)

[ Сервер для Forex от €7.95/мес ](/rus/server-for-forex)
