Автоматизированный скрипт сборки локального RTMP-сервера с поддержкой HLS для приёма и трансляции видеопотоков.
- macOS (Apple Silicon или Intel)
- Homebrew
- OpenSSL (
brew install openssl)
chmod +x build_local_rtmp.sh
./build_local_rtmp.shИли через Makefile:
make buildrtmp-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 build # Сборка и установка
./manage.sh start # Запуск
./manage.sh stop # Остановка
./manage.sh restart # Перезапуск
./manage.sh status # Статус
./manage.sh logs # Просмотр логов
./manage.sh test # Проверка конфигурации
./manage.sh clean # Удаление сервера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 # Проверка конфигурации- Настройки → Вещание
- Тип: Пользовательский...
- Сервер:
rtmp://<ваш-ip>:1935/live - Ключ потока:
test
IP-адрес Mac:
ipconfig getifaddr en0После начала трансляции 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 {
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 {
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.plistmake uninstall-autostartlaunchctl 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/*.logmake clean
# или
rm -rf ~/rtmp-server- Измените
NGINX_VERSIONвbuild_local_rtmp.sh - Запустите
./build_local_rtmp.shилиmake build - Перезапустите сервер:
./manage.sh restart
lsof -i :1935
kill -9 <PID>./manage.sh test # Проверка конфигурации
./manage.sh logs # Просмотр ошибок# Проверить зависимости
brew --version
brew --prefix openssl
# Логи сборки
cat ~/rtmp-server/build/configure.log
cat ~/rtmp-server/build/make.log# Проверить директорию
ls -la /tmp/hls/
# Проверить MIME-типы
curl -I http://localhost:8080/hls/test.m3u8