Повний посібник з RTMP: що це таке і коли його використовувати?
Протокол обміну повідомленнями в реальному часі (RTMP) - це широко використовуваний потоковий формат. Він існує вже багато років і став важливим інструментом для мовників, мережевих операторів та багатьох інших галузей. Однак деякі хибні уявлення про RTMP зробили його менш популярним, ніж він міг би бути.
Але що таке RTMP? Як він працює? І чи варто вам використовувати його для наступного прямого ефіру?
Дізнайтеся про це та багато іншого нижче.
Що таке RTMP?
RTMP - це мережевий протокол або система, що використовується для потокової передачі медіа-контенту через Інтернет на основі технології Transmission Control Protocol (TCP).
TCP є одним з компонентів, що складають набір інтернет-протоколів. Іншим важливим компонентом є інтернет-протокол, також відомий як IP.
RTMP - це мережевий протокол або система, що використовується для потокової передачі медіа-контенту через Інтернет.
Разом TCP і IP діють як комунікаційні мости між прикладним і мережевим рівнями. Подумайте про це так: прикладний рівень охоплює те, з чим ви зазвичай взаємодієте, наприклад, браузер Mozilla Firefox або будь-яку іншу програму користувача.
Щоб ваш браузер Firefox завантажив веб-сторінку, він повинен надіслати запит на сервер веб-сайту. Отримавши запит, сервер надсилає запитуваний ресурс (наприклад, відеопотік, попередньо записане відео на YouTube або Html-код веб-сторінки).
Щоб підтримувати ефективну комунікацію (тобто, щоб уникнути втрати або затримки кореспонденції), повідомлення має бути розбите на менші частини, відомі як пакети. Це робиться на стороні відправника, а після того, як повідомлення отримано, воно знову збирається для користувача.
TCP - це компонент, який займається розбиттям повідомлення на пакети або менші частини, які можуть бути передані ефективно та оперативно.
Рівень IP виступає в ролі агента переадресації, який визначає найкращі маршрути для передачі пакетів через Інтернет.
Протокол RTMP використовується багатьма популярними медіаплеєрами, зокрема Adobe Flash Player, VLC Media Player, QuickTime Player та Windows Media Player. RTMP також підтримується деякими веб-браузерами, зокрема Google Chrome і Mozilla Firefox.
Для більшості користувачів, які обирають рішення для потокового мовлення, першочерговим питанням є те, як воно забезпечує передачу контенту. Якщо якість роздільної здатності потокового мовлення низька, для більшості споживачів це стане вирішальним фактором. Аналогічно, потокове рішення з високою затримкою, буферизацією або занадто довгим завантаженням перед відтворенням контенту також не матиме успіху.
Саме тут RTMP є найкращим. З моменту своєї розробки RTMP гарантує низьку затримку, мінімальну буферизацію та одну з найкращих роздільних здатностей потокового мовлення за умови, що мережеве з'єднання достатньо надійне та швидке.
Ще одним плюсом RTMP є його здатність підтримувати масові потокові передачі одночасно і без особливих проблем.
Однак, незважаючи на те, що RTMP існує вже багато років, останнім часом вона потрапила під підвищену увагу, оскільки система є небезпечною для її користувачів.
Ось як з'являються вразливості в системі безпеки:
По-перше, протокол RTMP не має вбудованого шифрування. Тому будь-яка комунікація або передача пакетів під час використання RTMP відкрита для прослуховування несанкціонованими групами або атаками типу "зловмисник посередині".
Ще одним фактором, який спричинив вразливість RTMP, є те, що його вихідний код довгий час був пропрієтарним. Пропрієтарне програмне забезпечення (тобто програмне забезпечення, права власності та контролю над яким обмежені суб'єктом, який його розробив або придбав) зазвичай отримує регулярні патчі безпеки, але цього недостатньо.
Нові вразливості з'являються часто, а спільнота, побудована навколо програмного забезпечення з відкритим вихідним кодом, гарантує відносно частіші та якісніші патчі безпеки. Це те, що RTMP упустила для посилення своєї безпеки.
Варіації RTMP
Різновиди RTMP включають в себе наступні:
- Сервер протоколу обміну повідомленнями в реальному часі (RTMPS ) - схожий на RTMP, за винятком того, що він має шифрування, тобто рівень захищених сокетів (SSL) і безпеку на транспортному рівні (TLS), і підтримує всі плеєри з увімкненим Flash-плеєром. Він використовується в сценаріях, де життєво важливо запобігти фальсифікації або несанкціонованому доступу до даних під час передачі.
- Encrypted Real-Time Messaging Protocol (RTMPE) - це дуже універсальний потоковий протокол, який використовує протокол управління транспортом (TCP) і протокол користувацьких дейтаграм (UDP) для передачі даних. RTMPE також шифрує всі передачі даних за допомогою фірмового шифрування Adobe, щоб уникнути несанкціонованого доступу та підробки.
- Тунель протоколу обміну повідомленнями в реальному часі (RTMPT ) - RTMPT використовує механізм тунелювання для обходу брандмауерів , які зазвичай блокують весь RTMP-трафік. На практиці RTMPT вимагає, щоб клієнт надсилав модифікований HTTP-запит на сервер, який відповідає майже аналогічним HTTP-повідомленням. Клієнт і сервер використовують ідентифікатор сеансу; після встановлення з'єднання між ними може розпочатися передача даних.
- Протокол потокового мультимедіа в реальному часі (RTMFP ) - RTMFP є вдосконаленою версією RTMP, оскільки він використовує інший формат кодування UDP для досягнення високої продуктивності потокового мультимедіа.
Історія стрімінгу RTMP
Протокол обміну повідомленнями в реальному часі (RTMP) спочатку був власним протоколом, розробленим компанією Macromedia для потокової передачі аудіо, відео та даних через Інтернет між Flash-плеєром і сервером.
RTMP зараз використовується багатьма популярними онлайн-сервісами, такими як Facebook, Twitch і Twitter, для трансляції відео в реальному часі.
Перший публічний реліз RTMP відбувся у 2002 році. У 2009 році Adobe випустила версію RTMP з відкритою специфікацією, відому як OpenRTMP. Основна відмінність між RTMP і OpenRTMP полягає в тому, що з OpenRTMP можна використовувати будь-який медіа-сервер, а не лише Flash Media Server (FMS).
Відкрита специфікація RTMP також забезпечує більшу гнучкість щодо того, як розробники можуть захистити або налаштувати однорангову функціональність. Це має на меті заохотити інновації та співпрацю через конкуренцію та відкритий доступ серед розробників для розробки ідеального рішення RTMP.
Головний принцип
RTMP використовує технологію, яка називається "потокове передавання" для доставки контенту. Це означає, що дані передаються невеликими фрагментами, які називаються "чанками". На іншому кінці користувач може переглядати або слухати контент, не чекаючи на його повне завантаження.
Робота RTMP складається з двох частин: Доставка першої та останньої милі.
Доставка "першої милі" зазвичай передбачає передачу даних від кодера до сервера за допомогою протоколу RTMP. Передача "останньої милі" - це передача медіа з сервера на пристрій користувача. У цій другій частині використовується Flash-плеєр або інший подібний інструмент. Є повідомлення, що Adobe припиняє підтримку Flash, а отже, це означає кінець доставки "останньої милі".
У відповідь на це індустрія перейшла на протокол передачі гіпертексту (HTTP), більш ефективне рішення для потокової передачі даних.
Різновиди RTMP, такі як RTMPT, наразі використовують HTTP для інкапсуляції та передачі даних.
Як працює RTMP Ingest
Це, мабуть, одна з рятівних граней RTMP, яка дозволила йому проіснувати так довго. Коли світ перейшов від перегляду медіа на комп'ютерах до перегляду на мобільних пристроях, RTMP зіткнувся з проблемою.
З одного боку, RTMP покладався на програвач Adobe Flash для забезпечення безперебійного потокового мовлення, але виникла невелика проблема. Мобільні пристрої не підтримували Adobe Flash player; по суті, RTMP став марним для користувачів, які хотіли отримати ті ж самі потокові послуги на своїх мобільних пристроях.
У відповідь Apple розробила протокол HLS для підтримки функції потокового мовлення на мобільних пристроях.
Було цілком логічно очікувати, що RTMP застаріє. На щастя, RTMP продовжив своє існування, створивши свою нішу як ідеальний протокол для транспортування медіа від кодера до сервера.
RTMP ingest надає пріоритет недорогим кодерам і, як правило, пропонує користувачам потокове мовлення з низькою затримкою.
Вона включає в себе три основні компоненти:
1. Рукостискання
Коли клієнт хоче підключитися до RTMP-сервера, йому спочатку потрібно встановити рукостискання. Цей процес починається з того, що клієнт надсилає серверу запит "connect", який містить інформацію про клієнта і тип з'єднання, яке він намагається встановити.
Після цього сервер відповідає повідомленням "підключено", яке містить інформацію про сервер і тип встановленого з'єднання.
Нарешті, клієнт і сервер обмінюються повідомленнями, щоб підтвердити, що вони все ще з'єднані, і узгодити будь-які параметри, необхідні для з'єднання.
2. З'єднання
Основною метою з'єднання RTMP ingest є надання засобів для потокового передавання медіаконтенту від джерела до місця призначення.
Джерелом медіа може бути пряма трансляція з камери, попередньо записане відео, аудіо чи інші медіа. Місцем призначення зазвичай є потоковий медіа-сервер, який розподіляє контент серед глядачів.
З'єднання RTMP ingest складається з трьох компонентів:
- Кодер перетворює відео- та аудіосигнал у цифровий формат, який можна передавати через Інтернет.
- Транспорт: Це середовище, яким закодований сигнал надсилається від кодера до сервера; зазвичай це робиться через UDP або TCP.
- Сервер отримує закодований сигнал і робить його доступним для глядачів (зазвичай, упаковуючи його у формат на кшталт Flash).
3. Потокова передача
Коли користувач передає контент на медіасервер, сервер повинен спочатку закодувати вхідний відео- та аудіопотік, перш ніж розсилати його всім підключеним клієнтам.
Процес кодування і переформатування відео та аудіо в стандартний формат файлу називається транскодуванням. Він передбачає перетворення вхідного сигналу у форму, яку можна відтворювати на різних пристроях.
Детальніше про потокове мовлення Існує два типи потокового мовлення: пряме мовлення та мовлення на вимогу. Потокове мовлення - це мовлення в режимі реального часу, тоді як потокове мовлення на вимогу - це коли користувачі можуть переглядати контент у зручний для них час.
Потокове мовлення в реальному часі вимагає постійного з'єднання між клієнтом і сервером, тоді як потокове мовлення на вимогу - ні.
RTMP використовує TCP для підтримки постійного з'єднання між клієнтом і сервером, забезпечуючи потокове передавання з низькою затримкою. Однак RTMP не дуже добре підходить для потокового передавання на вимогу.
Альтернативи RTMP для прийому всередину
SRT і WebRTC є основними претендентами, які можуть зрівнятися з можливостями RTMP або перевершити їх. Ось короткий огляд цих двох альтернатив:
Безпечний надійний транспорт (SRT)
SRT заповнює прогалини, з якими не міг впоратися RTMP, наприклад, підтримуючи потокове мовлення з низькою затримкою, навіть якщо користувач підключений до відносно ненадійної мережі. Це робить його чудовим вибором як для потокового мовлення в реальному часі, так і для мовлення на вимогу.
Оскільки це відкритий вихідний код, його можливості безмежні, і не варто хвилюватися, що підтримка розробки буде припинена.
Веб-комунікації в реальному часі (WebRTC)
WebRTC виграє завдяки публікації на основі браузера. Протокол WebRTC HTTP Ingest Protocol (WHIP) також знаходиться в стадії розробки, а для користувачів це означає, що вони зможуть здійснювати потокову передачу за допомогою лише веб-браузера, замість того, щоб морочитися з кодувальниками, як у випадку з RTMP.
Альтернативи RTMP для евакуації
Першими в списку альтернатив RTMP є HTTP Live Streaming (HLS), MPEG-DASH і WebRTC.
Ось короткий огляд альтернативних варіантів:
HLS та MPEG-DASH
Ці два формати практично однакові, за винятком того, що HLS є пропрієтарним, а MPEG-DASH - з відкритим вихідним кодом.
Найкраще в цих двох програвачах те, що вони забезпечують низьку затримку, оптимальну якість мультимедіа і навіть працюють з ненадійними мережевими з'єднаннями.
WebRTC також є гідною альтернативою рішенням для евакуації RTMP.
RTMP і Flash вмирають?
Коротка відповідь: мабуть, ні. Довга відповідь трохи складніша.
Постійне зростання популярності HTML5 і поширення потужних альтернатив Flash може створити враження, що RTMP і Flash вмирають. Але це не так.
Flash вже деякий час перебуває в занепаді, втративши значну частку ринку на користь HTML5 за останні роки, і його колись домінуюча позиція у світі відео зараз постійно знаходиться під загрозою.
Тим не менш, він все ще має значну присутність в Інтернеті і використовується багатьма популярними сайтами, включаючи YouTube і Facebook.
Що стосується RTMP, то він все ще широко використовується для потокової передачі аудіо- та відеоконтенту. Однак його майбутнє менш визначене, ніж у Flash.
Adobe оголосила, що припинить підтримку RTMP у 2020 році, що може означати кінець цього протоколу. Тим не менш, існує безліч альтернатив, заснованих на RTMP, тому він, ймовірно, продовжуватиме використовуватися в тій чи іншій формі ще довгі роки.
Отже, чи варто вам стрімити за допомогою RTMP?
Це залежить від ситуації. Погляньте на деякі плюси і мінуси використання RTMP.
Плюси
- Він дуже стабільний. Порівняно з іншими альтернативами на ринку, дуже малоймовірно, що під час використання сервісу з підтримкою RTMP виникнуть перебої або простої.
- Низька затримка та мінімальна буферизація. RTMP є унікальним у цьому відношенні, а це означає, що користувачі можуть переглядати відео в кращій роздільній здатності, а завантаження медіа займає значно менше часу.
- Сумісність. Міцний і надійний характер RTMPS заохочує все більше виробників розробляти свої продукти для легкої інтеграції з RTMP
Мінуси
- RTMP вимагає постійного з'єднання між клієнтом і сервером, що може бути проблематично, якщо є перебої в мережі
- Оскільки це пропрієтарне програмне забезпечення, воно не має достатньої гнучкості для досвідчених користувачів.
ЧАСТІ ЗАПИТАННЯ
Як використовувати Wave.video для стрімінгу через RTMP?
Якщо ви хочете транслювати відео через RTMP, Wave.video - чудовий варіант. Ось як ним користуватися:
- Створіть обліковий запис на Wave.video та увійдіть, якщо ви цього ще не зробили.
- Виберіть відео, яке хочете транслювати.
- Перейдіть на сторінку "Destinations" на Wave.video і натисніть на "Custom RTMP"
- Далі вам потрібно знайти URL-адресу сервера і ключ потоку для контенту, який ви намагаєтеся транслювати. Для цього перейдіть на веб-сайт з потоком, який ви хочете переглянути.
- Якщо ви не знаєте, як це зробити, ви можете скористатися стороннім додатком або розширенням для вилучення URL-адреси та ключа.
- Скопіюйте URL-адресу сервера та ключ потоку.
- Вставте URL-адресу сервера та ключ потоку у Wave.video.
- Створіть або заплануйте свій стрім.
- Відкрийте пряму студію і почніть трансляцію.
Ось і все, що потрібно зробити, швидко і просто!
Які кодувальники підтримують RTMP?
Існує багато апаратного та програмного забезпечення кодерів, які підтримують RTMP. Деякі з них включають:
- Adobe Media Encoder
- OBS Studio
- Сервер Elemental Server
- TriCaster
- Трансляція
- vMix
- TeraDek
- Wowza Streaming Engine
- Niagara Video
RTMP проти RTSP - що краще?
RTMP і RTSP - це протоколи для потокового передавання аудіо, відео та даних через Інтернет. Вони багато в чому схожі, але деякі ключові відмінності роблять їх ідеальними для різних ситуацій та вподобань.
Ось короткий огляд ключових відмінностей між ними:
- RTMP краще підходить для прямих трансляцій, а RTSP - для трансляцій на вимогу.
- RTMP має меншу затримку, тоді як RTSP може забезпечити вищу якість відео.
- RTMP потребує Flash Media Server, тоді як RTSP може працювати з будь-яким медіа-сервером.
Отже, який протокол краще? Все залежить від ваших конкретних потреб.
RTMP - хороший вибір, якщо вам потрібна низька затримка і ви не проти використання Flash. RTSP може бути ідеальним, якщо вам потрібне високоякісне відео або ви хочете використовувати медіа-сервер, що не підтримує Flash.
Що таке формат повідомлення про дії (AMF)?
AMF - це двійковий формат для кодування і передачі даних через Інтернет, який часто використовується разом з RTMP.
AMF дозволяє передавати дані, несумісні з RTMP, наприклад, об'єкти ActionScript. Він також дозволяє ефективно обмінюватися даними між Flash-додатками та серверами.
Що таке RTMP URL-адреса і як її отримати з Facebook або YouTube?
URL-адреса RTMP - це унікальний ідентифікатор, який використовується для трансляції відеоконтенту в реальному часі на різні платформи.
Зазвичай він містить IP-адресу, доменне ім'я та номер порту.
Щоб отримати подію в прямому ефірі з YouTube або Facebook, ви повинні створити її на будь-якій з платформ. Після цього ви зможете знайти RTMP URL-адресу в налаштуваннях події.
Заключні думки
RTMP, безсумнівно, залишила свій слід у світі. Чи є він на шляху до виходу? Як рішення для евакуації, можливо, взагалі не проковтнути!
Навіть якщо з'являться інші рівноцінні або більш ефективні альтернативи, RTMP залишатиметься актуальним для передачі медіа та потокового мовлення.