За 5% от читателите, които вече знаят за Media over Quic, почти със сигурност имате свое собствено мнение по този въпрос, така че не се колебайте да пропуснете статията и да скочите направо в коментарите, за да обясните защо греша. За останалите 95%, вие вероятно сте като това в момента: Не се притеснявайте приятелите ми, ще се запознаем с Quic, как изпращате медии по него и как това е различно от поставянето на RTC в мрежата. Какво е WebRTC? Първо, нека направим бърз преглед на WebRTC. WebRTC е API зад повечето приложения за видеоконферентна връзка в мрежата.Той също се използва за куп други случаи на използване, включващи стрийминг на видео в реално време. За да илюстрирате това, помислете за приложение за вебинари: Създаване на приложение за вебинари Да предположим, че искате да изградите уеб приложение, за да хоствате уеб-семинари.Нуждаете се от хост, за да можете да споделяте видео и аудио на уеб камера и потенциално да споделяте екрана в реално време. Също така ще трябва участниците да могат да консумират тези видео потоци от домакина и потенциално да споделят собствените си видео и аудио камери, за да задават въпроси и / или за обща интерактивност. Как WebRTC позволява вебинари Стандартното решение за изграждане на нашето приложение за вебинари би било да се използва WebRTC, който е уеб API, предназначен главно за улесняване на приложения за видеоконферентни срещи.В приложенията на WebRTC всеки участник качва аудиото и видеото си като потоци в реално време, в повечето случаи на централен сървър, наречен Селективна предавателна единица Всеки участник отваря връзка със сървъра, улавя своя собствен локален поток от уеб камери, преговаря със сървъра, за да координира избора на кодек, скоростта на битовете и т.н., и след това започва да излъчва и се абонира за потоци от сървъра. В кода ще изглежда така: // SFU WebRTC: Single connection to server async function joinWebinar() { // 1. Get your webcam const localStream = await navigator.mediaDevices.getUserMedia({ video: true, audio: true }); // 2. Create ONE peer connection (to the server, not to each participant) const peerConnection = new RTCPeerConnection({ iceServers: [{ urls: ['stun:stun.example.com'] } }); // 3. Add your local stream to the connection for (let track of localStream.getTracks()) { peerConnection.addTrack(track, localStream); } // 4. Exchange connection details with the server const offer = await peerConnection.createOffer(); const answer = await signalingServer.send({ offer }); await peerConnection.setLocalDescription(offer); await peerConnection.setRemoteDescription(answer); // 5. When the server sends you other participants' streams, display them peerConnection.ontrack = (event) => { const participantId = event.streams[0].id; displayRemoteVideo(participantId, event.streams[0]); }; } WebRTC сървър Сървърът не само координира връзките между участниците, но и позволява селективно препращане на потоци между участниците. За вебинара с 100 участници това означава, че всеки участник не споделя своя уеб камера поток 99 различни пъти, те просто качват 1 поток на сървъра и това се препраща на всички. Всеки от 100-те участници също не трябва да се абонира за 99 други видео потоци, приложението може да приложи бизнес логика, така че всеки участник да се абонира само за поднабор от налични потоци (като може би всеки получава уеб камера и споделяне на екрана на хоста и 5 случайни други участници), намалявайки честотната лента за всички. WebRTC на практика WebRTC е създаден за видеоконферентни и съседни случаи на използване като нашия пример за уеб-семинари, така че се превърна в дефакто метод за извършване на видео обмен в реално време дори за платформи без браузър като Android и iOS. Основните предизвикателства пред WebRTC включват: Scalability - Server-side forwarding of many simultaneous video streams requires significant CPU and bandwidth, making it increasingly expensive to scale beyond a certain point (usually thousands) Control - WebRTC was built primarily with video conferencing in mind, and so while it is highly optimized for that use case, it lacks fine-grained control over media encoding & delivery (codecs, strings, packet-level control) that are relevant in other use cases like remote control or AI video pipelines. Какво е Media over Quic? Media over Quic (MoQ) е нов протокол за стрийминг на видео в реално време... нещо като WebRTC. И Media over Quic ни позволява да изграждаме приложения за видео в реално време като нашето приложение за вебинари, нещо като WebRTC... Добре, така че, но ако WebRTC вече съществува и работи добре, защо компании като и Всички от внезапната работа по нов протокол? облакът Мета Нека първо поговорим за QUIC Почти всяка нормална комуникация, с която може да се занимавате като уеб разработчик, е под формата на HTTPS заявка, която включва редица стъпки назад и напред между мрежата и сървъра за установяване на връзката. Тези HTTP заявки и API като Websockets и понякога WebRTC използват протокол, наречен TCP, протокол за обмен на данни между мрежа и сървър, където пакетите се изпращат по ред. Ако един пакет се загуби, следващите пакети се задържат, което запазва реда, но това може да доведе до "главна линия блокиране" QUIC е алтернативен протокол и действа по-скоро като бърз куриер, който дава приоритет на скоростта, може да изхвърли по-малко важни пакети (като видео рамка), но това означава да получите останалата част от вашата доставка по-бързо. Някои разлики между QUIC и нормален TCP / HTTP QUIC връзките изискват по-малко настройки QUIC може интелигентно да изхвърля отделни пакети, вместо да забавя цялата връзка QUIC може да поддържа връзка при превключване между мрежи, като например превключване от WIFI към клетъчна връзка QUIC е полезен мрежов протокол, който е особено подходящ за стрийминг на видео, въпреки че теоретично можете да изпращате всякакви данни чрез QUIC. Сега, че имаме, QUIC, нека изпратим някои медии за това Идеята зад Media over Quic е, както вероятно вече сте се досетили, да изпращате Media over QUIC връзки. По-конкретно обаче, Media over Quic е формализиран протокол в допълнение към QUIC. Media over Quic работи като pub/sub система, където изпраща потоци от кодирани медии до (по същество CDN) и Вземете тези редове от релето: publisher relay subscribers Медиите над Quic релетата са агностични по отношение на съдържанието, те не знаят какво се случва в мрежата, независимо дали става дума за видео, аудио, текст или просто случайно двоичен код. Друг ключов аспект е, че Media over Quic релетата могат да бъдат свързани заедно, така че някои абонати могат да получат данни, които са преминали само през 1 реле, а други могат да получат данни, които са преминали през 5 релета. Media over Quic релетата също не трябва да поддържат състоянието на цялостното "предаване", те просто действат като тръби за данни, без да знаят колко издатели и абонати има или колко време сесията е активна. Това са ключови функции, които позволяват Media over Quic да се изпълнява чрез , което позволява стрийминг в реално време до милиони зрители едновременно, нещо, което не е възможно с WebRTC. CDNs Примери за псевдокод За да гледате поток, той Media over Quic ще изглежда нещо подобно async function watchWebinarViaQuic() { // 1. Connect to the relay const connection = await Moq.connect("https://relay.moq.some-cdn.com"); // 2. Subscribe to the broadcast const broadcast = connection.consume("my-webinar"); // 3. Subscribe to the video and audio tracks const videoTrack = await broadcast.subscribe("video"); const audioTrack = await broadcast.subscribe("audio"); // 4. Decode and display/play the streams decodeAndDisplayVideo(videoTrack); decodeAndPlayAudio(audioTrack); } За да излъчите поток ще изглежда така: async function joinWebinarViaQuic() { // 1. Get your webcam const stream = await navigator.mediaDevices.getUserMedia({ video: true, audio: true }); const videoTrack = stream.getVideoTracks()[0]; const audioTrack = stream.getAudioTracks()[0]; // 2. Connect to a MoQ relay (instead of connecting to an SFU) const connection = await Moq.connect("https://relay.moq.some-cdn.com"); // 3. Create a broadcast (namespace for your streams) const broadcast = new Moq.Broadcast(); connection.publish("my-webinar", broadcast); // 4. Get video and audio tracks from the relay const videoMoqTrack = await broadcast.requested('video'); const audioMoqTrack = await broadcast.requested('audio'); // 5. Stream your camera to the relay encodeAndStreamVideo(videoTrack, videoMoqTrack); encodeAndStreamAudio(audioTrack, audioMoqTrack); } Всъщност кодирането / декодирането и показването на видео включва съвсем друго нещо, наречено Но има и Това се отнася за това... Уеб кодове Библиотеките Комуникации срещу връзки Основната архитектурна разлика между WebRTC и Media over Quic е, че WebRTC работи като поредица от активни състоятелни връзки, докато MoQ действа като поредица от независими, паралелни потоци. В WebRTC връзките са по своята същност двупосочни (независимо дали между връстници или от клиент към сървър), докато в MoQ операциите с паралелни независими еднопосочни потоци. Добре, но защо MoQ? Редица компании и разработчици са развълнувани от MoQ, защото има конкретни предимства в сравнение с WebRTC (и други уеб видео технологии). MoQ може да осигури същия вид видео преживяване в реално време като софтуер за видеоконферентна връзка, но тъй като потоците се изпращат чрез CDN, един човек с уеб камера може да предава до милиони хора, което би било невъзможно с WebRTC Scale: QUIC позволява по-надежден стрийминг, позволявайки връзките да продължат дори при превключване на мрежи (например мобилни към WIFI), а също така позволява падане на рамки / пакети, за да се гарантира доставка в реално време. Efficient transport Тъй като моделът на инфраструктурата е толкова прост, той значително опростява мрежовия стак, като същевременно осигурява по-ниско ниво на контрол върху видеокодирането и декодирането, което е важно за някои приложения. Simple model Медиите за Quic на практика От януари 2026 г. Media over Quic все още е на много ранен етап и разчита на няколко компонента, които все още се разработват: WebTransport - WebAPI, който позволява QUIC връзки, се поддържа от ~80% от браузърите, но все още не се поддържа в Safari Библиотеки: Основните библиотеки за Media over Quic съществуват само за Rust (сървър) и JS (клиент) и все още няма мобилни SDK Релеи: Няколко CDN доставчици създават MoQ релеи, а Cloudflare вече има един, но те все още са в "бета" и най-надеждният метод в момента е да хоствате свой собствен Media over Quic има достатъчно инструменти и поддръжка за ранните приематели, за да започнат да изграждат с него, но все още изисква много адаптации и внедрявания на "DIY" и все още е твърде рано за безпроблемен опит на разработчиците. Разработчиците (включително и аз!) работят върху основните библиотеки за Media over Quic, а компаниите разработват релеи / хоствани решения, така че очаквайте MoQ да стане по-стабилен и готов за производство през следващите месеци / години. Ще замести ли WebRTC? За хората в видео пространството в реално време, Media over Quic е гореща тема, с много дискусии за това дали Media over Quic ще замени WebRTC. За 5% от читателите вече знаеха за MoQ преди да дойдат на тази статия, вероятно вече сте дошли в тази статия с някакво мнение за отговора, така че не се колебайте да коментирате или да публикувате вашия контрааргумент, бих могъл да използвам SEO. За останалите 5% от вас, които са го направили през цялата статия (kudos!).Може да нямате кон в тази надпревара, но искам да подчертая, че независимо от това, ако работите в уеб разработването, вероятно е добре да сте наясно с MoQ и че това е нов стандарт за стрийминг на медии в реално време. Започнах да помагам с развитието на MoQ библиотеки не защото имам някакъв особен интерес или желание да заменя WebRTC, а защото ми харесва. и контрол на ниско ниво и е страхотно да се стигне до първия етаж на нов протокол.Това е казано, някои от най-близките ми професионални контакти са експерти на WebRTC (по-рано управлявах които AI филтрира SDK, насочени към продуктите на WebRTC) и като разработчик, просто гледайки документацията на MoQ, е ясно, че все още е твърде сурово и рано за широко използване. Уеб кодове Стартът Ще замести ли WebRTC? Може би WebRTC има добре установена екосистема и решава проблем, който преди това не е имал добро решение.За разлика от WebRTC, MoQ не се конкурира с "нищо", той се конкурира с установен, добре поддържан протокол. Това означава, че MoQ има реални предимства пред WebRTC и други стрийминг технологии като , и така ето вероятно някои случаи на употреба, където предимствата на MoQ ще осигурят убедителен случай за ранните приематели: HLS/DASH стрийминг Too big for WebRTC, to small for HLS/DASH Сладкото място за ранните приематели вероятно ще бъдат категориите приложения, които не се обслужват добре нито от WebRTC, нито от HLS / DASH (не в реално време, но е особено мащабно) Някои примери могат да включват: Софтуер за вебинари, където вебинарите се нуждаят от интерактивност в реално време, но също така трябва да се мащабират до хиляди или десетки хиляди участници Излъчване на виртуални събития, където говорителите обикновено излъчват малко=>много, но които често включват интерактивни Q&A Инструменти за стрийминг на живо, базирани на браузър, които предават видео от браузъри на сървъри и други участници, докато едновременно стриймират платформи за социални медии като Facebook Like или YouTube Live More control and reliability than WebRTC Media over Quic също биха били полезни в сценарии, където са необходими стабилни видео връзки или ниско ниво на контрол на видео доставката, като например в сценарии с отдалечени камери (сигурни камери, дронове, дистанционно управлявани превозни средства) или в реално време AI видео тръбопроводи. WebRTC често се използва в тези сценарии, но в тези случаи ползата от мащаба на MoQ е незначителна, основните предимства биха били от по-силната свързаност на HTTP3/Quic и контрола на ниско ниво на рамката, които правят MoQ атрактивна опция. For everything else За всичко останало има от WebRTC. Mastercard Ако изграждате стандартна видеоконферентна конференция, WebRTC е очевидно по-добра технология и вероятно няма да има случай на използване, в който MoQ има смисъл, докато / освен ако екосистемата на MoQ достигне нивото на стабилност и зрялост на WebRTC (възможно? но дори и тогава, може да отнеме известно време). Повече ресурси Ако сте любопитни за Media over Quic, WebRTC или просто стрийминг на медии в реално време като цяло, ето някои ресурси: Media over Quic Ако искате да научите повече за Media over Quic, можете да копаете по-дълбоко в Официалният сайт на MoQ. WebCodecsFundamentals, учебник с отворен код с примери за код MoQ несъгласие WebRTC Има много уроци за WebRTC ( , ) и можете да чуете и няколко други WebRTC експерти говорят за MoQ срещу WebRTC на Също така има голяма общност за спорове за разработчиците на WebRTC, наречени . уебсайт.dev МДН WebRTChacks Пион