В разделе «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 отображает следующее. содержание:
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 следующим образом:
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 Потоковое воспроизведение.
ffplay -i 'srt://127.0.0.1:8890?streamid=read:live'
В это время ffplay открывает окно проигрывателя и нормально воспроизводит видеоизображения и звуки. Также просмотрите журнал службы MediaMTX, как показано ниже:
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: от нулевых основ к короткому онлайн-видео».