Кол-во просмотров: 88
Задача: транслировать картинку с камеры в виджет своего сайта
Решение:
Поставим отечественный веб-сервер, поднимем на нем rtmp-сервер(закинем на него rtsp-картинку с помощью ffmpeg), rtmp-сервер создаст m3u8 файл, который съедобен для браузеров и видеоплееров. На этом же сервере опубликуем сайт, с которого будем показывать полученную «картинку» посетителям в их браузерах.
Добавка от 14 февраля 2025г.
После обновления пакетов теперь не запускается angie, т.к. ему не нравиться старая версия пакета angie-module-rtmp.so. В то же время какая-то редиска удалила пакет написав:
port deleted on 2025-12-31
REASON: Has expired: Upstream development has slowed down and there are a lot of unresolved issues and PRs upstream, consider migrating to multimedia/mediamtx

Поэтому не спешите удалять старую версию модуля angie-module-rtmp.so, и не обновляйте пакет.
Есть хорошая новость, нашел у себя порты с angie от августа 2025года, выкладываю сюда. Ставить как из обычных портов(make install clean):
+ модули nginx-rtmp-module.so для angie
1. Установка Angie
FreeBSD
- Чтобы подключить репозиторий Angie, создайте каталоги:
sudo mkdir -p /usr/local/etc/pkg/angie/ /usr/local/etc/pkg/repos/ - Чтобы настроить репозиторий, создайте файл
/usr/local/etc/pkg/repos/angie.confс таким содержимым:angie: {
url: "https://download.angie.software/angie/freebsd/${VERSION_MAJOR}/${ARCH}",
signature_type: "pubkey",
pubkey: "/usr/local/etc/pkg/angie/angie-signing.rsa",
enabled: yes
} - Скачайте открытый ключ репозитория Angie для проверки подлинности пакетов:
sudo curl -o /usr/local/etc/pkg/angie/angie-signing.rsa \
https://angie.software/keys/angie-signing.rsa - Обновите индексы репозиториев:sudo pkg update
- Установите пакет Angie:
sudo pkg install -r angie -y angie - (Необязательно) Установите пакеты необходимых вам дополнений:
sudo pkg install -r angie -y <ИМЯ ПАКЕТА>sudo pkg install -r angie -y angie-module-rtmp - Запустите сервис:sudo service angie start
- Чтобы автоматически запускать Angie после перезагрузки сервера:sudo sysrc angie_enable=YES
Примечание
Поскольку пакетный менеджер FreeBSD может неверно определять последнюю версию, для обновления уже установленных пакетов используйте следующий подход:
sudo pkg upgrade `pkg search -r angie angie-[0-9] | sort -Vr | head -1 | awk {'print $1'}`
2. Настройка
Пример рабочей конфигурации angie.conf с rtmp модулем:
user www;
worker_processes auto;
worker_rlimit_nofile 65536;
error_log /var/log/angie/error.log debug;
pid /var/run/angie.pid;
# Модуль трансляции в angie подгружатется так(долго же я искал пример))):
load_module modules/ngx_rtmp_module.so;
events {
worker_connections 65536;
}
# Публикация принимающего трансляцию сервера.
# При поступлении потока с ffmpeg, автоматически(по указанному здесь пути) появится файл с расширением .m3u8, название файла rtmp-модуль возьмет из указанного вами в ffmpeg пути к приемнику трансляции(s1 в этой записке(п.2).
rtmp {
server {
listen 1935;
application cam1 {
live on;
hls on;
hls_path /usr/local/www/angie/html/stream;
}
}
}
# Публикация сайта, с которого будем забирать трансляцию.
# /usr/local/www/angie/html/stream/ здесь будет искать указанный в vlc плеере файл(в примере ниже, s1.m3u8)
http {
server {
listen 8880;
server_name cam37.xn--h1afhbk.xn--p1ai;
location / {
alias /usr/local/www/angie/html/stream/;
}
}
}
3. Пересылаем картинку с камеры на rtmp-сервер
Отправляем из ffmpeg на получившийся rtmp сервер rtsp-трансляцию с камеры. Добавил слово s1, иначе по пути /usr/local/www/angie/html/stream будет файл без названия: «.m3u8». А в данной примере будет «s1.m3u8»:
ffmpeg -i rtsp://user:password@192.168.37.113/onvif1 -c:v libx264 -s 780x420 -r 25 -c:a aac -ar 22050 -b:a 32k -f flv -flvflags no_duration_filesize rtmp://192.168.37.1/cam1/s1
Или можно с камеры OpenIPC в разделе Majestic Settings — Outgoing прописать путь до rtmp сервера:
rtmp://192.168.37.1:1935/cam1/s1
4. Проверяем
Проверим в плеере VLC. Открыть url: http://cam37.орлин.рф:8880/s1.m3u8
Работает с ffmpeg! С камеры OpenIPC напрямую трансляции не видно в vlc, хотя поток данных на сервер поступает и vlc его видит… надо разбираться с этим.
5. Вставляем на сайт
Осталось вставить блок с видео, со ссылкой на нужный плейлист, на страницу сайта. Код вставки:
<video width="352" height="198" controls>
<source src="http://cam37.орлин.рф:8880/s1.m3u8" type="application/x-mpegURL">
</video>
Готово!
За кадром
… много времени ушло разобраться в синтаксисе angie и на то чтобы в голове сложилась логика работы всего этого механизма.
Возможные ошибки:
- Игнорирует путь до файлов сайта в конфигурации angie.conf, — отправляет на папку файлов самого angie. Ошибка вида: «/usr/local/etc/angie/html/stream/s1.m3u8» failed (2: No such file or directory). Решение: в описании «location / » после знака дроби убрать все слова, оставить просто одну дробь.
2. Также важен последний знак дроби здесь же в «stream/«, иначе будет считать слово stream частью названия файла.
3. При отправке трансляции в ffmpeg, после названия приложения(cam1) поставить дробь и написать название(слово), тогда будет не просто плейлист без названия типа «.m3u8» а появится полноценный файл с названием «слово.m3u8», иначе хрен подцепишь его в плеер.
Литература:
https://angie.software/angie/docs/installation/oss_packages/#install-freebsd-oss