Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RTMP-сервер на macOS (nginx + RTMP-модуль)

Автоматизированный скрипт сборки локального RTMP-сервера с поддержкой HLS для приёма и трансляции видеопотоков.

Требования

  • macOS (Apple Silicon или Intel)
  • Homebrew
  • OpenSSL (brew install openssl)

Быстрый старт

chmod +x build_local_rtmp.sh
./build_local_rtmp.sh

Или через Makefile:

make build

Структура проекта

rtmp-server/
├── build_local_rtmp.sh        # Скрипт сборки
├── manage.sh                  # CLI для управления сервером
├── Makefile                   # Команды сборки и управления
├── com.rtmp-server.plist      # Автозапуск (macOS launchd)
├── .gitignore
├── README.md
├── AGENTS.md                  # Документация для Агента
└── build/                     # Исходники (временные)
    ├── nginx-1.28.0/
    └── nginx-rtmp-module-*/

Результат сборки: ~/rtmp-server/nginx/

Управление сервером

Через manage.sh

./manage.sh build      # Сборка и установка
./manage.sh start      # Запуск
./manage.sh stop       # Остановка
./manage.sh restart    # Перезапуск
./manage.sh status     # Статус
./manage.sh logs       # Просмотр логов
./manage.sh test       # Проверка конфигурации
./manage.sh clean      # Удаление сервера

Через Makefile

make build             # Сборка
make start             # Запуск
make stop              # Остановка
make restart           # Перезапуск
make status            # Статус
make logs              # Логи
make test              # Проверка конфигурации
make clean             # Удаление
make install-autostart # Установка автозапуска
make uninstall-autostart # Удаление автозапуска

Напрямую

~/rtmp-server/nginx/sbin/nginx           # Запуск
~/rtmp-server/nginx/sbin/nginx -s stop   # Остановка
~/rtmp-server/nginx/sbin/nginx -s reload # Перезагрузка
~/rtmp-server/nginx/sbin/nginx -t        # Проверка конфигурации

Трансляция

Настройка в OBS Studio

  1. Настройки → Вещание
  2. Тип: Пользовательский...
  3. Сервер: rtmp://<ваш-ip>:1935/live
  4. Ключ потока: test

IP-адрес Mac:

ipconfig getifaddr en0

Просмотр HLS

После начала трансляции HLS-плейлист доступен по адресу:

http://localhost:8080/hls/test.m3u8

Просмотр:

ffplay http://localhost:8080/hls/test.m3u8

В браузере (поддержка Safari/Chrome): откройте URL в виде страницы или используйте hls.js.

Статистика

http://localhost:8080/stat

Конфигурация

Конфигурационный файл: ~/rtmp-server/nginx/conf/nginx.conf

RTMP-блок

rtmp {
    server {
        listen 1935;
        chunk_size 4096;

        application live {
            live on;
            record off;
            interleave on;
            sync 0ms;
            wait_key on;
            drop_idle_publisher 5s;

            hls on;
            hls_path /tmp/hls;
            hls_fragment 3;
            hls_playlist_length 60;
        }
    }
}

HTTP-блок (HLS + статистика)

http {
    server {
        listen 8080;

        location /hls {
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            root /tmp;
            add_header Cache-Control no-cache;
            add_header Access-Control-Allow-Origin *;
        }

        location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }
    }
}

Директивы

Директива Описание
worker_processes auto Все ядра CPU
live on Live-стриминг
record off Без записи на диск
interleave on Снижение задержки видео+аудио
sync 0ms Синхронизация без задержки
wait_key on Ожидание ключевого кадра
drop_idle_publisher 5s Отключение неактивных издателей
hls on Включение HLS
hls_fragment 3 Длина фрагмента 3 сек
hls_playlist_length 60 Плейлист 60 сек

Автозапуск

Установка

make install-autostart

Или вручную:

cp com.rtmp-server.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/com.rtmp-server.plist

Удаление

make uninstall-autostart

Проверка

launchctl list | grep rtmp

Логи

Файл Описание
logs/rtmp-access.log RTMP-запросы
logs/nginx-error.log Ошибки nginx
logs/http-access.log HTTP-запросы
logs/http-error.log HTTP-ошибки

Просмотр:

./manage.sh logs
# или
tail -f ~/rtmp-server/nginx/logs/*.log

Удаление

make clean
# или
rm -rf ~/rtmp-server

Обновление

  1. Измените NGINX_VERSION в build_local_rtmp.sh
  2. Запустите ./build_local_rtmp.sh или make build
  3. Перезапустите сервер: ./manage.sh restart

Troubleshooting

Порт 1935 занят

lsof -i :1935
kill -9 <PID>

nginx не запускается

./manage.sh test     # Проверка конфигурации
./manage.sh logs     # Просмотр ошибок

Ошибка компиляции

# Проверить зависимости
brew --version
brew --prefix openssl

# Логи сборки
cat ~/rtmp-server/build/configure.log
cat ~/rtmp-server/build/make.log

HLS не работает

# Проверить директорию
ls -la /tmp/hls/

# Проверить MIME-типы
curl -I http://localhost:8080/hls/test.m3u8

About

Локальный RTMP-сервер на macOS с HLS-поддержкой (nginx + RTMP-модуль)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages