Замечания по разработке FFmpeg (41) Объединение OBS и MediaMTX для реализации потоковой передачи SRT в реальном времени.
Замечания по разработке FFmpeg (41) Объединение OBS и MediaMTX для реализации потоковой передачи SRT в реальном времени.

В разделе «10.2 Push and Pull Streaming FFmpeg» в книге «Практика разработки FFmpeg: от нулевых основ к короткому видео в Интернете» упоминается, что в индустрии прямого вещания существуют два распространенных протокола потокового мультимедиа: RTSP и RTMP. Кроме того, в 2017 году был запущен протокол SRT. По сравнению с обычным протоколом RTMP, протокол SRT имеет меньшую задержку и устраняет артефакты экрана, такие как зависания кадров и дрожание. Tencent Video Cloud представила протокол SRT и на практике добилась хороших эффектов видео в реальном времени.

Начиная с версии 4.0, FFmpeg поддерживает интеграцию сторонней библиотеки libsrt, которая является библиотекой поддержки протокола SRT. Программное обеспечение с открытым исходным кодом, такое как OBS Studio и MediaMTX, также поддерживает SRT. Два отечественных сервера потокового мультимедиа с открытым исходным кодом, SRS и ZLMediaKit, поддерживают протокол SRT. Видно, что SRT заменил RTMP в области прямого вещания. Перед началом прямой трансляции, описанной в этой статье, обязательно убедитесь, что FFmpeg на вашем компьютере интегрирована библиотека libsrt. Подробные инструкции по интеграции см. в предыдущей статье «Интеграция libsrt для FFmpeg в среду Windows». В качестве примера возьмем среду Windows. Используйте OBS Studio в качестве стороны записи и потоковой передачи для прямой трансляции SRT, используйте MediaMTX в качестве сервера потокового мультимедиа для размещения прямой трансляции SRT и используйте медиаплеер ffplay и VLC в качестве потокового проигрывателя для прямой трансляции SRT. Давайте продемонстрируем, как это работает. Создайте полноценную систему прямого вещания SRT от записи до распространения и воспроизведения на персональном компьютере. Во-первых, в соответствии с введением «10.2.2 Потоковая передача FFmpeg в сеть» в книге «Практика разработки FFmpeg: от нулевых основ к короткому видео в Интернете» установите и запустите MediaMTX. Всплывающее окно журнала MediaMTX отображает следующее. содержание:

Язык кода:javascript
копировать
2023/12/10 14:18:25 INF MediaMTX v1.3.0
2023/12/10 14:18:25 INF configuration loaded from E:\Program Files (x86)\mediamtx\mediamtx.yml
2023/12/10 14:18:25 INF [RTSP] listener opened on :8554 (TCP), :8000 (UDP/RTP), :8001 (UDP/RTCP)
2023/12/10 14:18:25 INF [RTMP] listener opened on :1935
2023/12/10 14:18:25 INF [HLS] listener opened on :8888
2023/12/10 14:18:25 INF [WebRTC] listener opened on :8889 (HTTP), :8189 (ICE/UDP)
2023/12/10 14:18:25 INF [SRT] listener opened on :8890 (UDP)

Как видно из приведенного выше журнала, служба SRT, предоставляемая MediaMTX, прослушивает порт 8890 и использует протокол транспортного уровня UDP. В настоящее время префикс адреса доступа службы SRT — srt://127.0.0.1:8890?streamid=xxx. «srt://» в начале указывает, что адрес использует протокол srt, а следующий «srt». 127.0.0.1:8890» — это служба SRT. IP и номер порта. Следующее значение «?streamid=xxx» представляет имя потока службы SRT, где xxx — это строка в формате «действие: путь». Действие перед двоеточием имеет два значения. Публикация представляет метод передачи потока, а чтение — чтение. Указывает сторону потоковой передачи; путь после двоеточия указывает путь к адресу воспроизведения. Затем запустите OBS Studio, нажмите кнопку «Настройки» в правом нижнем углу основного интерфейса и в появившемся окне настроек выберите «Прямая трансляция» из списка слева, в разделе «Сервис» выберите «Пользовательский». " в правой части окна и заполните "srt" в столбце "Сервер": //127.0.0.1:8890?streamid=publish:live", как показано ниже:

После настройки адреса сервера SRT следуйте инструкциям из предыдущей статьи «Использование OBS Studio для включения потоковой передачи RTMP», чтобы разрешить OBS Studio включить потоковую передачу видео в реальном времени. Просмотрите журнал службы MediaMTX следующим образом:

Язык кода:javascript
копировать
2023/12/10 14:18:59 INF [SRT] [conn 127.0.0.1:50021] opened
2023/12/10 14:19:01 INF [SRT] [conn 127.0.0.1:50021] is publishing to path 'live', 2 tracks (H264, MPEG-4 Audio)

Видно, что служба SRT MediaMTX публикует аудиопоток и видеопоток стороны потоковой передачи в прямом эфире. Затем следуйте введению «1.3 Установка FFmpeg в системе Windows» в книге «Разработка FFmpeg: от нулевых основ до короткого видео в Интернете», установите FFmpeg на свой персональный компьютер и откройте командную строку MSYS, запустите следующую команду ffplay и ожидайте начать с адреса SRT Потоковое воспроизведение.

Язык кода:javascript
копировать
ffplay -i 'srt://127.0.0.1:8890?streamid=read:live'

В это время ffplay открывает окно проигрывателя и нормально воспроизводит видеоизображения и звуки. Также просмотрите журнал службы MediaMTX, как показано ниже:

Язык кода:javascript
копировать
2023/12/10 14:19:40 INF [SRT] [conn 127.0.0.1:53466] opened
2023/12/10 14:19:40 INF [SRT] [conn 127.0.0.1:53466] is reading from path 'live', 2 tracks (H264, MPEG-4 Audio)

Видно, что ffplay в качестве средства извлечения потока извлекает аудиопотоки и видеопотоки из прямого пути службы SRT, что указывает на то, что MediaMTX успешно реализовал функцию двухтактной потоковой передачи живого видео SRT через протокол SRT. Наконец, откройте медиаплеер VLC, выберите меню: «Медиа» — «Открыть потоковую передачу по сети» и заполните ссылку потоковой передачи службы SRT «srt://127.0.0.1:8890?streamid=read:live» в поле Адресная строка URL-адреса», нажмите кнопку воспроизведения в правом нижнем углу окна, и вы сможете использовать медиаплеер VLC для воспроизведения адреса прямой трансляции SRT.

Более подробную информацию о разработке 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 и детали кода