Замечания по разработке FFmpeg (40) Nginx интегрирует модуль rtmp для реализации потоковой передачи push и pull RTMP.
Замечания по разработке FFmpeg (40) Nginx интегрирует модуль rtmp для реализации потоковой передачи push и pull RTMP.

«10.2.2 Передача потоковой передачи FFmpeg в сеть» в книге «Практика разработки FFmpeg: от нулевых основ к короткому видео в Интернете» представляет облегченный сервер потокового мультимедиа MediaMTX. Хотя MediaMTX очень прост в использовании, он не может удовлетворить сложные бизнес-потребности. Поэтому профессиональный сервер потокового мультимедиа необходимо внедрить в практические приложения. nginx-rtmp — это сторонний модуль rtmp, который можно расширить с помощью веб-сервера с открытым исходным кодом Nginx. Этот модуль инкапсулирует rtmp-сервер и может предоставлять простые функции сервера потоковой передачи rtmp. Поскольку Nginx сам по себе является высокопроизводительным WEB-сервером, поддерживающим прокси-распределение данных нескольких протоколов, интеграция RTMP-серверов через Nginx также является возможным решением. Nginx не включает модуль rtmp по умолчанию. Вам необходимо добавить модуль rtmp при компиляции nginx и изменить файл конфигурации, чтобы включить службу rtmp. Потому что процесс компиляции nginx+rtmp в среде Windows очень затруднителен. Нам приходится учитывать не только проблемы совместимости версий различных зависимых пакетов, но и проблему переключения между MSYS и командой Visual Studio. Поэтому здесь мы опишем только, как интегрировать rtmp для Ngixn в среду Linux, подробные шаги интеграции описаны ниже.

1. Подготовьте исходный код Nginx и модуль nginx-rtmp.

Официальный адрес веб-сайта Nginx — https://nginx.org/, а страница загрузки — https://nginx.org/en/download.html. Последняя версия — nginx-1.26.0, выпущенная в апреле 2024 года. исходный код этой версии: Ссылка для скачивания пакета: https://nginx.org/download/nginx-1.26.0.tar.gz. Адрес хостинга исходного кода модуля nginx-rtmp — https://github.com/arut/nginx-rtmp-module, а страница загрузки каждой версии — https://github.com/arut/nginx-rtmp-. модуль/теги большинство. Новая версия — nginx-rtmp-module-1.2.2, выпущенная в апреле 2024 года. Ссылка для загрузки пакета исходного кода для этой версии — https://github.com/arut/nginx-rtmp-module/archive/refs/tags/. v1 .2.2.tar.gz. После загрузки вышеуказанных пакетов исходного кода загрузите их в каталог /usr/local/src сервера Linux. Эти пакеты исходного кода будут распакованы в этом каталоге позже.

2. Скомпилируйте и установите Nginx (включая встроенный модуль rtmp).

Войдите на сервер Linux и выполните следующие команды распаковки, чтобы распаковать пакеты исходного кода nginx-rtmp-module, nginx и т. д.

Язык кода:javascript
копировать
cd /usr/local/src
tar zxvf nginx-rtmp-module-1.2.2.tar.gz
tar zxvf nginx-1.26.0.tar.gz

Затем войдите в каталог исходного кода nginx и выполните следующую команду для настройки nginx.

Язык кода:javascript
копировать
cd nginx-1.26.0
./configure --prefix=/usr/local/nginx --with-http_ssl_module --add-module=../nginx-rtmp-module-1.2.2

После завершения настройки выполните следующую команду для компиляции nginx.

Язык кода:javascript
копировать
make -j4

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

Язык кода:javascript
копировать
make install

3. Запустите службу RTMP Nginx.

Откройте conf/nginx.conf в пути установки nginx, добавьте следующую конфигурацию rtmp в конец файла и укажите номер порта и имя службы для мониторинга протокола rtmp.

Язык кода:javascript
копировать
rtmp {
    server {
        # Номер порта протокола rtmp
        listen 1935;
        # Имя службы протокола rtmp
        application live {
            live on;
        }
    }
}

После добавления сохраните nginx.conf и выйдите. Затем выполните следующую команду, чтобы запустить nginx.

Язык кода:javascript
копировать
cd /usr/local/nginx/sbin
./nginx

4. Проверьте, нормально ли работает nginx-rtmp.

Затем отправьте видеофайл в службу rtmp через ffmpeg, то есть отправьте видеофайл на rtmp://127.0.0.1/live/test с помощью следующей команды. Подробное описание использования ffmpeg можно найти в книге «Практика разработки FFmpeg: от нулевых основ до короткого онлайн-видео», которая здесь не будет повторяться.

Язык кода:javascript
копировать
ffmpeg -re -stream_loop -1 -i "/usr/local/src/test/2018s.mp4" -vcodec h264 -f flv rtmp://127.0.0.1/live/test

Затем запустите медиаплеер потокового мультимедиа VLC на компьютере и откройте сетевую потоковую передачу «rtmp://xxx.xxx.xxx/live/test». Видно, что медиаплеер VLC нормально воспроизводит живое видео по ссылке rtmp. , указывающий на nginx-rtmp. Сервис корректно реализует функцию передачи потокового мультимедиа протокола rtmp.

Более подробную информацию о разработке FFmpeg можно найти в разделе «Практика разработки FFmpeg: от нулевых основ к короткому онлайн-видео».

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода