Это десятилетие стало десятилетием быстрого развития аудио и видео. От интерактивных развлечений и прямых трансляций электронной коммерции до интернет-конференций и онлайн-образования, аудио и видео являются одними из основных возможностей недавно популярной метавселенной.
Начиная со сцены подключения микрофонов в комнате прямой трансляции, вы можете понять технологии, используемые в интернет-аудио и видео. Благодаря этому вы можете глубоко изучить соответствующие технические моменты аудио и видео, чтобы можно было установить полноценное аудио и видео. систему видеотехнологий и быстро применить ее в онлайн-бизнесе.
В 2015 году прямые аудио- и видеотрансляции вызвали большой взрыв. Типичными сценариями являются прямые трансляции интерактивных развлечений и электронной коммерции. WebRTC быстро развивался в 2017 году. Типичными сценариями являются интернет-конференции, онлайн-обучение, прямые трансляции с малой задержкой и взаимодействие. Начните спекулировать на Yuanverse в 2021 году, и аудио и видео также являются одними из основных возможностей.
Взрывной рост аудио и видео обусловлен быстрым развитием и совершенствованием облачных вычислений, базовых сетей и интеллектуальных терминалов. За последние десять лет базовая сеть быстро развивалась, широко использовалась сеть 4G, а широкополосная связь практически достигла покрытия во всех уголках страны. С ростом популярности интеллектуальных терминалов, особенно смартфонов, Китай вступил в эпоху мобильного Интернета. В качестве способа передачи информации можно постепенно использовать более интуитивно понятные аудио и видео.
В этих сложных сценариях аудио и видео прямая трансляция и WebRTC являются основными технологиями интернет-аудио и видео, и основные сценарии приложений могут быть реализованы за счет комбинации этих двух технологий. Сцена подключения микрофонов в комнате прямого эфира — лучшее сочетание прямого эфира и технологий WebRTC.
Начиная со сцены подключения микрофонов в комнате прямой трансляции, вы можете понять технологии, используемые в интернет-аудио и видео. Благодаря этому вы можете углубленно изучить соответствующие технические моменты аудио и видео и построить полноценный звук. и система видеотехнологий.
Предварительные требования, необходимые очки знаний или зависимые инструменты:
Ниже приведены шаги по реализации сценария прямой трансляции и подключения микрофона. Начните с простой сцены и постепенно реализуйте прямую трансляцию и подключение микрофона.
Чтобы подключить комнату прямой трансляции к микрофону, нам сначала нужно построить обычную комнату прямой трансляции. Хотя в ней нет возможности подключения микрофона, прямая трансляция и просмотр являются базовыми возможностями.
Поскольку обычная прямая трансляция очень полна, это самый простой сценарий для реализации. Он даже не требует знаний программирования и может быть реализован с использованием существующих цепочек инструментов.
первый,Скачиваем стриминговый инструмент OBS[2],Это широко используемый инструмент потоковой передачи.,В сети много документов и видеоуроков.,Вы можете потратить время, чтобы понять основы использования。мы выбираемSettings > Stream > Service(Custom)
,Push-адрес OBS состоит из двух частей.,в целомпрямая трансляция Платформа это предоставит,Например:
rtmp://******.livepush.myqcloud.com/trtc_**********/
live_******?txSecret=******&txTime=******
Затем мы посмотрим на платформу прямой трансляции. По сложности реализации, от простого к сложному, на выбор есть три способа:
Примечание. В этой главе мы представляем только решения SaaS и решения с открытым исходным кодом. Поскольку облачная служба PaaS включает прямую и непрерывную трансляцию, мы представим их позже.
Мы создаем новую прямую трансляцию на платформе SaaS. На разных платформах будут предъявляться требования к проверке или другие требования. Как только требования будут выполнены, вы сможете создать прямую трансляцию, например учетную запись видео [3] или станцию B [4]. в прямом эфире вы можете получить два параметра OBS Push. После отправки потока в SaaS вы можете использовать клиент SaaS для его просмотра. Например, учетную запись видео можно перенаправить в группы и моменты WeChat, и ее можно просмотреть в WeChat, например, Bilibili — это приложение Bilibili, а также его можно просматривать через веб-страницу; Полная ссылка на прямую трансляцию приведена ниже:
ОБС (якорь) ---RTMP---> Видеоаккаунт/Платформа Bilibili -----> Приложение WeChat/Bilibili (аудитория)
Преимущество прямой трансляции SaaS заключается в том, что вам не нужно знать подробности прямой трансляции, вы можете начать прямую трансляцию напрямую, и пользователи смогут ее смотреть напрямую. Конечно, вы не можете настроить прямую трансляцию и можете это сделать. проводите прямую трансляцию только в соответствии с дизайном платформы, и вы не можете развертывать собственные серверы, например, в школах или невозможно развернуть видеоаккаунт или систему прямой трансляции для станции B внутри предприятия.
Если вам нужно понять принципы прямого вещания или создать собственную платформу прямого вещания, вы можете использовать решение с открытым исходным кодом.
Для решений с открытым исходным кодом в прямом эфире инструмент потоковой передачи по-прежнему использует OBS [5], и метод использования тот же. Но нам нужно самостоятельно развернуть сервер, а также нужно выбрать клиент для просмотра прямой трансляции:
Рекомендуется использовать Cloud SRS, поскольку позже его также можно использовать для непрерывной пшеницы. Самый удобный способ развертывания SRS — использовать облачный SRS [6], который можно развернуть одним щелчком мыши с помощью образа Tencent Cloud. Другие облака или ваши собственные виртуальные машины можно развернуть с помощью Pagoda. Подробности см. в видеоруководстве. [7]. Если вы хотите скомпилировать и развернуть SRS из кода, вы также можете обратиться к SRS[8].
После развертывания SRS вы можете использовать OBS для отправки потока в SRS. Адрес обычно относительно прост, например:
rtmp://your-server-ip/live/
livestream
Примечание. При использовании облачной SRS,но
Stream Key
Могут быть символы аутентификации.,Напримерlivestream?secret=******
,Доступен из облакаSRS的后台私人прямая трансляциямежду
Просто скопируйте。
Плееры с открытым исходным кодом нужно выбирать самостоятельно,Самый простой — VLC[9],выбиратьFile > Open Network
,Затем введите адрес:
rtmp://your-server-ip/live/livestream
http://your-server-ip/live/livestream.flv
http://your-server-ip/live/livestream.m3u8
Note: Если вы развертываете SRS самостоятельно, порт HTTP по умолчанию равен 8080, и его необходимо добавить к адресу, например
http://your-server-ip:8080/live/livestream.flv
Используя решения с открытым исходным кодом для создания прямых трансляций, легче увидеть всю ссылку прямой трансляции, как показано на следующем рисунке:
ОБС (якорь) ---RTMP---> SRS ----RTMP/FLV/HLS---> VLC
Примечание. Для протоколов RTMP и FLV между клиентом и SRS существует соединение TCP. Протокол HLS представляет собой несколько TCP-соединений.
Обычные пользователи не будут использовать VLC для просмотра прямых трансляций. Фактически, вы также можете смотреть прямую трансляцию напрямую с помощью браузера. Например, с помощью SrsPlayer[10] вы можете ввести адрес FLV или HLS для просмотра. Прямую трансляцию HLS могут смотреть как ПК, так и мобильные терминалы. Вы также можете встроить адрес прямой трансляции в страницу блога WordPress, обратитесь к ссылке [11], чтобы иметь более богатое отображение контента. Помимо просмотра прямых трансляций HLS на H5, мобильный терминал также может использовать ijkplayer[12] для встраивания прямых трансляций в собственные приложения.
После установки плагина SrsPlayer[13] создайте новую публикацию или страницу и вставьте прямую трансляцию на страницу WordPress:
[srs_player url="http://your-server-ip/live/livestream.flv"]
Примечание. Для онлайн-ДЕМО см. демонстрацию прямой трансляции FLV [14].
Примечание. Для различных бизнес-требований мы можем выбирать разные прямые потоки. Как правило, FLV имеет меньшую задержку и не так совместим, как HLS, который имеет более высокую задержку, но имеет хорошую совместимость с платформами. Вы также можете использовать WebRTC для просмотра прямых трансляций. Здесь это не описано. Если вам интересно, вы можете изучить это самостоятельно.
Использование SRS для построения прямой трансляции, хотя вы можете видеть весь процесс связи прямой трансляции, существует очевидная проблема: существует только один сервер SRS, и количество зрителей, которые он может поддерживать, ограничено. мало сцен, очень мало потоков. Нужно поддерживать сотни, тысячи или даже десятки тысяч зрителей. Для формирования кластера можно использовать несколько SRS, за которым может следить больше людей. Мы не будем подробно обсуждать эту реализацию, но вы можете обратиться к кластеру SRS [15].
Примечание. Между кластером SRS и облачной службой прямой трансляции все еще существует разница. Кластер SRS только расширяет возможности SRS по параллельной работе. Однако в дополнение к параллельной работе в облачных службах прямой трансляции ее можно использовать. Интернет также должен поддерживать планирование поблизости. Для измерения и выставления счетов, мониторинга эксплуатации и технического обслуживания, защиты безопасности и т. д., пожалуйста, обратитесь к принципам CDN для получения подробной информации.
Теперь, когда мы понимаем, как реализовать прямую трансляцию, мы рассмотрим, как реализовать непрерывную трансляцию, а затем преобразовать непрерывную трансляцию в прямой эфир, создав таким образом комнату прямой трансляции с возможностью непрерывного вещания.
Lianmai — это, по сути, звонок. Два ведущих общаются друг с другом, а затем экран связи превращается в прямую трансляцию и переносится на платформу прямой трансляции. Поскольку вы хотите общаться, вам, очевидно, нужно отправлять и извлекать потоки. Это отличается от предыдущих якорей, которые только передавали потоки, но не вытягивали потоки.
Независимо от того, какая технология, платформа или архитектура выбрана, судя по блок-схеме, подключение к микрофону — это процесс звонка:
Якорь <---RTC---> сервер или платформа <---RTC---> Якорь
Примечание. В отличие от протокола TCP, который обычно используется для прямых трансляций, RTC здесь, как правило, является протоколом UDP, и TCP-соединения не будет. Однако с точки зрения логического потока якорям необходимо передавать и извлекать потоки друг друга для завершения. подключение микрофона или процесс вызова.
Что существенно отличает звонки от прямых трансляций, так это то, что для звонков не существует единого стандартного протокола, поэтому клиенты привязаны к платформе, а клиенты от разных поставщиков и решений не могут взаимодействовать. Поэтому, когда мы реализуем возможности звонков, мы можем выбирать только разных клиентов в соответствии с нашими разными планами.
Примечание. WebRTC — это стандарт вызовов, но на самом деле WebRTC — это не RFC, а состоит из десятков основных RFC. Кроме того, с точки зрения бизнес-сигнализации, алгоритмов управления перегрузкой QoS, голосовых алгоритмов, а также алгоритмов кодирования и декодирования, каждая платформа разработала частный протокол, основанный на ее собственных бизнес-характеристиках и оптимизации, поэтому даже если WebRTC, поддерживаемый каждой платформой, не совместимый.
Аналогично, самый простой план звонков — SaaS. Вы можете выбрать Tencent Conference или Zoom SaaS для двух звонков. У них есть свои клиенты и системы учетных записей, которые вам нужно только скачать и использовать.
Если вы используете открытый исходный код для его сборки, рекомендуется использовать сервер SRS. Самый удобный способ развертывания SRS — использовать облачный SRS [16], который можно развернуть одним щелчком мыши с помощью образа Tencent Cloud. Другие облака или ваши собственные виртуальные машины можно развернуть с помощью Pagoda. Подробности см. в видеоруководстве. [17]. Если вы хотите скомпилировать и развернуть SRS из кода, вы также можете обратиться к SRS [18].
Поскольку потоковая передача WebRTC должна использовать HTTPS, а для HTTPS требуется доменное имя и сертификат, вы можете обратиться к инструкции по настройке HTTPS [19]. Конечно, если вы используете самозаверяющий сертификат, вам необходимо вручную разрешить самозаверяющий сертификат.
После установки Cloud SRS,我们打开后台私人прямая трансляциямежду
,выбиратьWebRTC-стриминг
,Нажмите кнопку «Изменить название потока».,Получите ссылки на потоковую передачу и воспроизведение,каждый Якорьодинпоток Адрес, например:
webrtc://lh.ossrs.net:443/live/acagdd?secret=xxx
webrtc://lh.ossrs.net:443/live/ccdkkc?secret=xxx
Каждому ведущему нужно только открыть свой push-поток и страницу воспроизведения другой стороны, чтобы обеспечить непрерывные вызовы через микрофон. Схема потоковой передачи выглядит следующим образом:
ЯкорьA ----WebRTC-----> SRS ----WebRTC---> Якорь Б
Якорь Б ----WebRTC-----> SRS ----WebRTC---> ЯкорьA
Примечание. Обмен адресами воспроизведения между якорями на самом деле является своего рода бизнес-сигнализацией. Если два якоря подключены к микрофону, они могут вручную обмениваться адресами воспроизведения друг друга. Если к микрофону подключено 10 якорей, это сервер бизнес-сигнализации. необходимо для реализации обмена сигналами автоматически после входа в комнату.
Аналогичным образом, потоковая передача и воспроизведение WebRTC могут быть встроены в страницы блога WordPress, см. ссылку [20], чтобы можно было отображать более богатый контент.
После установки плагина SrsPlayer[21] создайте новую публикацию или страницу, например страницу привязки A, и вставьте адрес отправки потока и воспроизведения потока другой стороны:
[srs_publisher url="webrtc://your-server-ip/live/stream-a"]
[srs_player url="webrtc://your-server-ip/live/stream-b"]
Примечание. Для онлайн-ДЕМО см. страницу WebRTC: Anchor A [22].
На странице Anchor B вставьте адрес отправки потока и воспроизведения потока другой стороны:
[srs_publisher url="webrtc://your-server-ip/live/stream-b"]
[srs_player url="webrtc://your-server-ip/live/stream-a"]
Примечание. Для онлайн-ДЕМО см. страницу WebRTC: Anchor B [23].
Два якоря могут открывать страницу отдельно, чтобы обеспечить непрерывную трансляцию.
Примечание. Вы можете реализовать динамическую страницу для отправки потоков и получения потоков других людей на одной странице. Для этого требуется только бизнес-сервер для обмена URL-адресами, и это относительно легко реализовать.
Далее нам нужно всего лишь преобразовать сцену подключения к микрофону или совершения звонка в прямой эфир, чтобы реализовать прямую трансляцию подключения к микрофону.
Технически существует несколько вариантов преобразования Lianmai в прямую трансляцию:
Давайте сначала посмотрим на простыеСмешанная потоковая передача на стороне клиента
план,Клиент ОБС,НовыйSources > Window Capture
,Запечатлейте конференцию Tencent Лианмая илиWebRTCвеб-страница。ЗатемвыбиратьSettings > Audio > Global Audio Device > Desktop Audio > Default
,Вы можете добавить Desktop Audio, представляющий собой сведение Lianmai.
Примечание. OBS также может обрезать окно после нескольких снимков, чтобы получить более сложную компоновку.
Для WebRTC вы можете создать отдельную страницу, чтобы извлекать поток хоста, но не отправлять его, как показано ниже:
[srs_player url="webrtc://your-server-ip/live/stream-a"]
[srs_player url="webrtc://your-server-ip/live/stream-b"]
Примечание. Для онлайн-ДЕМО см. страницу WebRTC: Anchor B [24].
В ОБС,НовыйодинSources > Browser
,открыть эту страницу,Вы можете захватывать как видео, так и звук. OBS также может обрезать страницы.,Реализуйте разные макеты,Например, поместите видеоэкран на задний план.,Можно добавить текстовое описание и дизайн пользовательского интерфейса.,Можно добиться эффекта новостной студии.
Есть другой способ,Стриминг сервера
план,То есть преобразовать каждый поток RTC в поток RTMP.,Затем используйте командную строку FFmpeg для объединения двух потоков:
ffmpeg -f flv -i rtmp://your-server-ip/live/stream-a -f flv -i rtmp://your-server-ip/live/stream-b \
-filter_complex "[1:v]scale=w=96:h=72[ckout];[0:v][ckout]overlay=x=W-w-10:y=H-h-10[out]" -map "[out]" \
-c:v libx264 -profile:v high -preset medium \
-filter_complex amix -c:a aac \
-f flv -y rtmp://your-server-ip/live/merge
Этот метод сложнее, чем OBS, но он позволяет напрямую преобразовывать локальный RTMP-поток на сервере, а для запуска этой команды можно использовать программу, что полезно для реализации этой возможности в продуктах.
С точки зрения потоковой обработки это решение:
StreamA ----WebRTC-----> SRS ----RTMP---+
+--> FFmpeg ---RTMP--> прямая трансляция
StreamB ----WebRTC-----> SRS ----RTMP---+
С технической точки зрения вполне возможно напрямую микшировать потоки RTC. Обычно это называется режимом MCU (SRS — это режим SFU):
StreamA ----WebRTC-----> SRS ----RTC---+
+--> MCU ---RTMP--> прямая трансляция
StreamB ----WebRTC-----> SRS ----RTC---+
Это решение устраняет промежуточный процесс RTMP и является более эффективным. Оно также может использовать преимущества алгоритма перегрузки RTC и другие преимущества для обеспечения развертывания SFU и MCU в нескольких машинных залах.
Примечание. В настоящее время платформы конференций используют эту модель MCU для реализации смешанной потоковой передачи. Информацию о проектах с открытым исходным кодом см. в OWT [25].
SaaS (Video Account и Tencent Conference) не имеет порога, но недостаточно гибок. Решения с открытым исходным кодом (SRS, OBS, WebRTC и FFmpeg) очень гибки, но требуют построения всей системы, особенно крупномасштабной дистрибьюторской сети, которая не может этого сделать. построят за день-два.
PaaS более гибок и его проще реализовать для собственного бизнеса, чем SaaS, но по сравнению с открытым исходным кодом вам не нужно самостоятельно создавать огромную инфраструктуру. PaaS предоставляет различные платформенные сервисы, такие как прямая трансляция в облаке, TRTC, облако по запросу, облако. Куб просмотра мгновенных сообщений и клиентов и т. д. Базовые услуги подобны строительным блокам, которые можно гибко комбинировать и использовать в соответствии с вашим собственным бизнесом. Нам нужно сосредоточиться только на реализации бизнеса.
Мы выбираем Tencent Cloud «Xiao Live Broadcast» [26]. Приложение Xiao Live — это комплексное решение для прямой онлайн-трансляции с открытым исходным кодом. Оно создано на основе облачной службы прямой трансляции и обмена мгновенными сообщениями (IM) и использует облачные функции (бессерверные). для обеспечения стандарта. Фоновая служба может реализовывать такие функции, как вход в систему, регистрация, трансляция, список комнат, взаимодействие Lianmai, текстовое взаимодействие и заграждающие сообщения.
После активации службы прямой трансляции Tencent Cloud нажмите Live Broadcast SDK. > Управление лицензиями [27], создайте новую тестовую лицензию, информация следующая:
https://license.vod2.myqcloud.com/license/v2/xxx/v_cube.license
xxxxxxxxxxxxxxx
Затем нажмите «Управление Lianmai». > Приложение Lianmai [28], создайте новое приложение Lianmai, информация следующая:
1400xxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
затем,Заявление в Лианмае[29],выбиратьСтраница конфигурации просмотра CDN > Обходной толчок > Глобальный автоматический обход
,Это позволитRTCпотокпреобразован вRTMPпрямая трансляцияпоток。
Загрузите код клиента:
git clone https://github.com/tencentyun/XiaoZhiBo
На примере iOS установите зависимости и откройте проект iOS:
cd XiaoZhiBo/iOS/APP
pod install
open XiaoZhiBoApp.xcworkspace
Примечание. Подробную информацию о командах и системе Android см. в разделе «Запуск приложения Small Live»[30].
открыть файлXiaoZhiBo/iOS/APP/Debug/GenerateGlobalConfig.swift
,Установите параметры:
Note: в
PLAY_DOMAIN
то естьпрямая трансляциядоменное имя воспроизведения,Можно найти в Облачный прямой эфир > Настройте имя домена воспроизведения в управлении доменными именами [31].
Чтобы изменить проектBundle identifier
Поля License Имя пакета, соответствующее информации. Соединять iOS устройство, скомпилируйте и запустите.
Благодаря прямой трансляции мы узнали о полноканальном принципе прямой трансляции, построении платформы прямой трансляции, принципе вызовов WebRTC, построении вызовов WebRTC для реализации непрерывной потоковой передачи, а также различных технических решениях для преобразования прямой трансляции в прямую трансляцию. потоковая передача. Кроме того, мы также научились использовать инструменты SaaS и облачные платформы PaaS для реализации потокового вещания в реальном времени и быстрого применения его в онлайн-бизнесе.
[1]
Облачная СРС: https://ossrs.net/lts/zh-cn/blog/SRS-Cloud-Tutorial
[2]
OBS: https://obsproject.com/
[3]
Номер видео: https://channels.weixin.qq.com/platform/live/liveBuild
[4]
Станция Б: https://link.bilibili.com/p/center/index#/my-room/start-live
[5]
OBS: https://obsproject.com/
[6]
Облачная СРС: https://ossrs.net/lts/zh-cn/blog/SRS-Cloud-Tutorial
[7]
Видеоурок: https://www.bilibili.com/video/BV1844y1L7dL/
[8]
SRS: https://github.com/ossrs/srs#usage
[9]
VLC: https://www.videolan.org/
[10]
SrsPlayer: https://ossrs.net/players/srs_player.html
[11]
Связь: https://ossrs.net/lts/zh-cn/blog/WordPress-Plugin
[12]
ijkplayer: https://github.com/bilibili/ijkplayer
[13]
SrsPlayer: https://wordpress.org/plugins/srs-player/
[14]
Отображение прямой трансляции FLV: https://wp.ossrs.net/live-demo-flv/
[15]
Кластер SRS: https://github.com/ossrs/srs/wiki/v4_CN_Home#cluster-guides
[16]
Облачная СРС: https://ossrs.net/lts/zh-cn/blog/SRS-Cloud-Tutorial
[17]
Видеоурок: https://www.bilibili.com/video/BV1844y1L7dL/
[18]
SRS: https://github.com/ossrs/srs#usage
[19]
Как настроить HTTPS: https://ossrs.net/lts/zh-cn/blog/SRS-Cloud-HTTPS
[20]
Связь: https://ossrs.net/lts/zh-cn/blog/WordPress-Plugin
[21]
SrsPlayer: https://wordpress.org/plugins/srs-player/
[22]
WebRTC: привязка страницы A: https://wp.ossrs.net/webrtc-hosta/
[23]
WebRTC: страница привязки B: https://wp.ossrs.net/webrtc-hostb/
[24]
WebRTC: страница привязки B: https://wp.ossrs.net/webrtc-mergeab/
[25]
OWT: https://github.com/open-webrtc-toolkit/owt-server
[26]
Tencent Cloud «Маленькая прямая трансляция»: https://cloud.tencent.com/document/product/454/38625
[27]
Живой SDK > Управление лицензиями: https://console.cloud.tencent.com/live/license
[28]
Руководство Лианмай > Приложение Лианмай: https://console.cloud.tencent.com/live/micro/appmanage
[29]
Приложение Лианмай: https://console.cloud.tencent.com/live/micro/appmanage
[30]
Запустите небольшое приложение для прямой трансляции: https://cloud.tencent.com/document/product/454/38625#.E6.AD.A5.E9.AA.A42.EF.BC.9A.E8.BF.90.E8.A1.8C.E2.80.9C.E5.B0.8F.E7.9B.B4.E6.92.AD.E2.80.9Dapp
[31]
Облачный прямой эфир > Управление доменным именем: https://console.cloud.tencent.com/live/domainmanage