Comments 20
Только я хотел под предыдущей публикацией написать, что в списке хабов не хватает «Ненормального программирования», как автор уже тут с новой публикацией!
Кстати, а публикации на английском про этот видеотелефон есть?
Да, есть на Reddit где встретили довольно тепло и есть на некоторых других ресурсах, где пост прошел не замеченым.
Кстати, Sixel терминалы поддерживаются ?
Интересная задумка и реализация.
А ключ "минус РКН" есть? Ну, они же вот не любят, когда люди по работе на серверы по КВН ходят, или созваниваются не через российский частный мессенджер с названием на латинице...
Честно говоря отсылки не понял... все протоколы и кодеки (кроме видео кодека) это зрелые открытые технологии.
Тоннель ygg выбран как отличное решение для отказа от stun серверов, в отличое от WebRTC и других подобных решений, плюс я из коробки получил гарантированное восстановления связи при обрыве, а это меньше кода и логики внутри.
Если бы я например использовал что то другое, мне пришлось бы использовать весь тот стек который сделал бы утилиту сильно жирнее. Пришлось бы делать какие то сертификаты и шифрования, двойные рукопожатия и весь тот геморой которого хотелось избежать... опять же, NAT, пробросы портов и т.д.
Ну и вес выходной получился бы сложнее, плюс в go пришлось бы тащить кучу сишного хлама, каких то зависимостей и прочего прочего... размер утилиты вырос бы до 500 Мб примерно, а сложность сборки проекта улетела бы в космос.
Сейчас утилита в районе 10 Мб, и собирается без каких либо проблем под любую ОС, хоть под винду, хоть под фряху. Едиснтвенное под что я ее еще не портировал это plan9. И экзотика типа QNX, Haiku и т.д.. Причем сейчас это выглядит как весьма легкое занятие, в отличии от реализации на WebRTC, сертификатах и т.д.
а, отсылку понял и нет, это не может использоваться для обхода кзкиа либо ограничений РКН, во первых это не законно, во вторых это не поможет, белые списки это белые списки 😁
ygg не поможет заниматься обходами ограничений, но поможет с проблемами NAT и как я написал ниже со всем сишным стеком который бы тянулся в либу
Добавил в статью целый абзац... просто на всякий случай, во избежание недопониманий
на android порт не планируете?
Я уже думал, на счет этого, но, есть несколько нерешенных проблем,
1. нужно решить проблему с уведомлением о входящем звонке, т.е. клиент должен что то где то сделать (куда то что то послать) что бы у того кому ты звонишь появилось уведомление о входящем звонке… надо ресерчить как такое делается
2. нужно подумать делать просто звонки, или звонки с видео, если просто звонки, то тут вообще все просто, а вот если с видео, то нужно будет добавить другой кодек. Возможно прямо на стороне приложения, т.е. статическая либа будет транспортом, для передачи кодека… и если мы идем вторым путем, но можно будет использовать не g722 а что то пободрее, наприемр codec2 или opus или еще что то для звука, и какой то hevc для видео и в таком случае потеряется обратная совместимость с оригинальной утилитой
3. для добавления контакта нужно передать адрес френда, а адрес можно передать только как то отдельно, сообщением например или контактом (этот момент тоже надо продумать)
Упс, а где иллюстрации?
Первоначально, помимо модницы в бирюзовом, было ещё 3 монохромных мужика в статье.
Всего у нас есть три компоненты Y Cb и Br
У меня по YCbBr ничего не гуглится, всюду YCbCr. Это опечатка или тайные технологии древних?
В этом режиме терминал принимает JPEG или PNG, упакованные в base64, сам их декодирует и отрисовывает как обычное изображение.
JPEG/PNG, я так понимаю, генерирует сама утилита, а передаётся всё по-прежнему в BABE-T, но с большим разрешением?
Я тут порассматривал артефакты сжатия и они мне напомнили эффект «Oil painting» из графических редакторов. Кодек делался с учётом существующих алгоритмов для этого эффекта или переизобретался полностью с нуля?
P.S. Попутно с рассматриванием артефактов с удивлением узнал, что FFMPEG умеет генерировать анимированные WEBP, но до сих пор не умеет их читать. Багу уже 10 лет.
Смотри, картинки были конвертированы в webp, вес большой я убрал... оставил только одну тяжелую картинку.
Опечатку поправил, спасибо Y, Cb, Cr конечно же 😁
Утилита работает на базе ffmpeg, она отдает nut, который дальше уже конвертируется в jpg/png + base64, если мы рендерим с ключом -super
Если рендер обычнтый, то рендерим в глифы и выводим через tcell
Историю создания кодека можно почитать в статье https://habr.com/ru/articles/973868/, а oil painting возникает за счет того что технология вывода на экран не позволит выдать что т олучше чем сейчас
Да webp почему то не читает 😁 но создает 100%
Интересная идея. А есть ли video sink плагин для GStreamer в терминал c тем же принципом работы? Было бы полезно.
Скажи yay -S say