Есть в телевидении такая тема, как SDI. Это коаксиальный кабель, по которому передается видео на частотах до 10 гигабит. 4K в сыром несжатом виде, по 4 байта на пиксель - как нехрен делать. Очень удобно работает: воткнул провод и сразу всё видно (конечно же нет, но об этом попозже).
Но мир требует перехода на IP, а с ним беда: он в десятки раз дешевле, что недопустимо для старых компаний. Значит что надо сделать? Надо придумать такой типа-IP протокол, в который нельзя влезть без FPGA плат, обеспечивающих синхронный риалтаймовый ethernet на скоростях порядка 10 гигабит в секунду.
SDI
В чём вообще с ним проблема и зачем от него отказываться?
Причина первая: он редкий, а поэтому глючный невзирая на его цену. Мы перепробовали на рынке практически все карты, кроме Osprey и по всем из них мы заводили критические баги, включающие зависание центрального процессора, т.е. плата что-то делает с шиной PCIe после чего надо ребутать питанием. Всё железо SDI по определению сырое, сколько бы оно ни стоило и причина у этого простая: оно редкое. Никакими деньгами не вылизать то, чем редко пользуются.
Причина вторая (следствие первой): он дорогой. Плата, передающая 10 гигабит будет стоить от 700 до
4000 долларов. Аналогичная плата ethernet будет стоить от 20 долларов.
Причина третья: он очень, очень старый и негибкий. В этом его удобство, потому что худо бедно уже все друг к другу притерлись (нет, всё подглючивает по мелочам, особенно на переходных процессах), но только подумайте: звук передается во время вертикальной паузы. Т.е. на дворе уже прошла четверть 21 века, нам уже прогулы ставят за космические межзвездные полеты, а мы делаем цифровые системы, рассчитывающие на то, что лучу в ЭЛТ нужны миллисекунды на переток заряда для VBI (vertical blanking interface).
С субтитрами всё ещё хуже: они передаются в виде оцифрованного аналогового радиосигнала внутри которого идет оцифрованный текст. Т.е. текст в цифру, оттуда в низкочастотный радиосигнал, его семплируем в звук и получаем какой-то мусор, который пишется примерно туда же.
Но есть у SDI и ещё плюсы:
- По нему нельзя взломать, а для телевизионщиков, не имеющих возможности нанимать квалифицированные сетевые кадры, это очень существенно. Правда это никак не спасает их от взломов
- Он синхронный и это очень облегчает работу. Более того: это дает возможность сохранять рабочие места для интересного пласта людей, которые написать скрипт под линукс не могут, а прошивку на FPGA собрать могут. Конечно же она будет без тестов, написанная не в команде и вообще паршивой, но она будет.
Почему телевизионщики, которые на такой сладости зарабатывают много денег, решили вдруг ехать на IP, где их сразу обидят в каждую дырку те, кто давно научился работать по-другому? Да ровно поэтому. Когда качественный клип пишется на айфон, очень сложно продолжать продавать железо на порядки дороже и не то чтобы принципиально лучше.
При этом надо понимать, что существует очень и очень большой вопрос: а нужна ли будет студия за 5 млн баксов через 10 лет или её заменит генеративная нейросеть? Конечно не заменит, но очень здорово изменит.
Важно отметить, что мэтры устоявшейся индустрии уже слышат сзади натужное сопение Амазона, который в одной руке держит банку лубриканта с ментолом из Звездочки, а другой расстегивает ширинку. Боязнь ухода в облако неописуема.
Web streaming
А что там у нового поколения? Штурмуются сотни гигабит в секунду с одного сервера, под сотню каналов транскодирования на одном сервере, UGC. А это всё возможно благодаря кратному удешевлению стоимости создания сигнала, а SDI именно там.
Там же возникла технология NDI, суть которой в следующем: давайте возьмем сырое видео и сожмем его, потеряв, например, 5% качества. Это полная фигня, учитывая что запаса по качеству хватает, а дальше на тракте телевизионщики всё равно своим DVB испоганят всё очень сильно.
Это сжатие позволит снизить битрейты с 1-3 гигабит примерно в 10 раз и сделает возможным работу по бытовым гигабитным линкам. При этом весь видеотракт рассчитан на передачу кадров, буферизацию, задержки и всё ок, так все живут.
За этим подходом будущее, но он убивает старую индустрию, значит так делать нельзя, надо по-другому.
SMPTE 2110
Старые хитрожопые засранцы не могли просто так пройти мимо такого и решили сделать удар под дых тем, кто решил сваливать туда, где всё мокрее и задорнее торчит всё дешевле и делается на надежном commodity железе.
Стандарт SMPTE 2110 на вид начинается очень адекватно: давайте засунем сырое видео в RTP кадры и будем его слать. С той стороны сети примем и оно будет работать.
На этом адекватность заканчивается, больше ничего хорошего про стандарт сказать нельзя, пойду про плохое.
- RTP взят без RTCP. Т.е. не существует механизма привязки RTP таймстемпа к UTC, а значит нельзя связать таймстемпы с аудио и видео потоков, идущих даже от одного источника. Почему? Пойдем дальше.
- В стандарте неоднократно упомянут протокол PTP, но без описания: зачем и как им пользоваться. Просто он есть и всё тут, а зачем - непонятно. А я разобрался и восхищен этим уровнем подлости.
- Дело в том, что в этом протоколе таймстемпы должны браться не из пакетов данных, а из реального времени(!). Чтобы маркировать кадры реальным временем, нужно чтобы это время ставила сетевая карта, которая сконфигурировалась протоколом PTP
- Тут то и раскрывается первый обман: это не IP протокол, а Ethernet. Оно в принципе не работает без сетевой карты, которая конфигурируется протоколом, который броадкастом разлетается по сегменту. Эти люди умудрились вместо IP сделать просто другой кабель!!!
- RTP таймстемпы вообще никак не работают, не используются и нужны только чтобы понять, что начался следующий кадр.
- Безопасности в сети нет и не может быть патологически. Всё это живет только в защищенном L2 сегменте
- А теперь подходим к сладкому: тот, кто рассылает пакеты на скорости под 100 тыс пакетов в секунду, должен очень точно выдерживать тайминг между ними, чтобы всё работало. Всё это специально проектировалось так, чтобы нельзя было делать это из линукса, а надо было отгружать в FPGA плату и слать из неё
- На раздачу есть милые прелести: после почти 10 лет жизни стандарта, поддержки его пиксельформата нет в ffmpeg (как и вообще формата от SDI), в отличие от NDI, который использует стандартный v210
В разговорах вообще указывают, что участие в видеотракте решений с операционкой на борту не предусматривается и это зло и от лукавого (кажется довольно понятно, почему).
На выходе получаем 10-гигабитную сетевую карту за $2000, что дешевле чем Aja Kone, но всё ещё в 100 раз дороже 10G SFP.
Это хорошая иллюстрация тому, как опасно садиться в хвост развития вражеской индустрии и делать всё по чужим стандартам. Ну а мы в
Flussonic как обычно будем налаживать мосты между мирами и делать возможным то, что планировать сделать нельзя.