Замечания по разработке FFmpeg (36) Установка SRS в среде Linux для реализации потокового видео в реальном времени.
Замечания по разработке FFmpeg (36) Установка SRS в среде Linux для реализации потокового видео в реальном времени.

В книге «Практика разработки FFmpeg: от нулевых основ к короткому видео онлайн» в главе 10 представлен легкий сервер потокового мультимедиа MediaMTX. Этот инструмент может тестировать потоки push и pull протоколов потокового мультимедиа, таких как RTSP/RTMP. Однако функция MediaMTX слишком проста и не может быть применена к производственной среде реальной прямой трансляции. Сервер потокового мультимедиа, который можно по-настоящему использовать в производственной среде, зависит от SRS или ZLMediaKit.

SRS — это домашний видеосервер реального времени с открытым исходным кодом, который поддерживает такие протоколы потокового мультимедиа, как RTMP, WebRTC, HLS, HTTP-FLV, SRT, MPEG-DASH и GB28181. Медиа-сервер SRS работает с такими клиентами, как FFmpeg, OBS, VLC и WebRTC, обеспечивая возможность получения и распространения аудио- и видеопотоков. Это типичная модель сервера публикации (потоковой передачи) и подписки (воспроизведения). SRS поддерживает преобразование аудио- и видеопротоколов, широко используемых в Интернете. Например, он может конвертировать RTMP или SRT в такие протоколы, как HLS, HTTP-FLV или WebRTC. Объединив FFmpeg и SRS, вы можете легко протестировать push- и pull-потоки аудио и видео. Далее, используя систему Эйлера Huawei в качестве операционной среды, мы покажем, как компилировать, устанавливать и отлаживать SRS. Подробные этапы работы следующие.

1. Скомпилируйте и установите SRS.

1. Войдите на сервер Linux (например, в систему Euler от Huawei Cloud) и выполните следующую команду, чтобы установить пакет зависимостей SRS.

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

2. Выполните следующую команду, чтобы загрузить исходный код SRS с сайта gitee.

Язык кода:javascript
копировать
cd /usr/local/src
git clone -b develop https://gitee.com/ossrs/srs.git

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

Язык кода:javascript
копировать
cd srs/trunk
./configure

4. Запустите следующую команду, чтобы скомпилировать SRS.

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

После выполнения команды в каталоге srs/trunk/obj создается исполняемая программа SRS srs.

2. Скомпилируйте и установите FFmpeg.

Подробные инструкции по компиляции и установке FFmpeg в системе Linux см. в разделе «1.2 Установка FFmpeg в системе Linux» в книге «Практика разработки FFmpeg: от нулевых основ к короткому онлайн-видео», которая здесь не будет повторяться.

3. Запустите СРС

1. Войдите в каталог конфигурации магистрали SRS, то есть выполните следующую команду:

Язык кода:javascript
копировать
cd /usr/local/src/srs/trunk/conf

2. Откройте файл конфигурации srs.conf и добавьте следующую строку конфигурации в vhost __defaultVhost__:

Язык кода:javascript
копировать
    gop_cache   on;

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

Язык кода:javascript
копировать
cd /usr/local/src/srs/trunk
./objs/srs -c conf/srs.conf

4. Проверьте, открыты ли на сервере следующие порты: Порт 1935 используется для протокола rtmp и необходим для доступа к адресу прямой трансляции, начинающемуся с «rtmp://». Порт 8080 используется для протокола http и необходим для доступа к адресу прямой трансляции, начинающемуся с «http://».

4. Проверьте push- и pull-поток видео SRS.

1. Выполните следующую команду, чтобы передать локальное видео в SRS через протокол RTMP.

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

Примечание. SRS не поддерживает push-потоковую передачу RTSP, а только push-потоковую передачу RTMP. 2. Откройте проигрыватель VLC, выберите меню «Медиа» → «Открыть потоковую передачу по сети», введите любой из следующих адресов в поле URL-адреса сети и посмотрите, можно ли нормально воспроизводить видеоэкран.

Язык кода:javascript
копировать
rtmp://124.***.***.***/live/test
http://124.***.***.***:8080/live/test.flv
http://124.***.***.***:8080/live/test.m3u8

Обратите внимание, что вам необходимо заменить «124.***.***.***» в приведенном выше адресе фактическим адресом общедоступной сети сервера потокового мультимедиа.  более подробный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 и детали кода