Этот способ передачи файлов вообще не использует интернет (decimen)

BBetter Stack
Computing/SoftwareConsumer ElectronicsInternet Technology

Transcript

00:00:00Вот вопрос. Как отправить кому-то файл без использования сети и без каких-либо
00:00:05физических накопителей вроде USB-флешек? Что ж, ответ — оптическая передача файлов. Разработчик по имени Эван
00:00:13Кроули только что создал инструмент под названием Deciman, который способен передавать файл с одного устройства на
00:00:19другое просто путем мигания QR-кодов и их считывания. Это очень крутая техника передачи файлов,
00:00:26и в ней используются довольно умные инженерные приемы. Так что в сегодняшнем видео мы рассмотрим
00:00:31Deciman, посмотрим, как он работает, и протестируем его в различных сценариях, чтобы оценить реальную мощность
00:00:37оптической передачи файлов. Будет очень интересно, так что давайте погрузимся в это.
00:00:46Deciman работает следующим образом. Одно устройство отображает на своем экране поток кадров, похожих на QR-коды,
00:00:53а другое устройство наводит на него камеру и декодирует их обратно в файл. Таким образом, здесь нет никакого сетевого стека.
00:01:00Так что, если вам когда-нибудь понадобится обменяться файлами с изолированным от сети устройством, это единственный способ
00:01:06сделать это без физического подключения каких-либо внешних устройств, таких как USB-накопители. И идея заключается в том, что вы
00:01:12кодируете свой файл как последовательность QR-кодов, выводите их на экран один за другим и заставляете камеру
00:01:19на другом конце захватывать и декодировать каждый кадр. Это может показаться простым, но сложность возникает
00:01:26из-за того, что камеры на самом деле не захватывают мгновенно, а экраны не обновляются
00:01:32мгновенно. Таким образом, вы соревнуете два разных аппаратных обеспечения друг с другом, и если они рассинхронизируются,
00:01:38кадры повреждаются или теряются полностью. Но ответом Deciman на эту проблему является метод, называемый фонтанным кодированием.
00:01:46Вместо того чтобы отправлять первый кадр, второй кадр, третий кадр и надеяться, что каждый из них дойдет,
00:01:53он генерирует практически неограниченный поток закодированных кадров, где каждый кадр представляет собой математическую смесь
00:02:00частей исходного файла, а не какой-то конкретный его кусок. Это значит, что ни один отдельный кадр не является незаменимым.
00:02:07Получателю не нужен именно кадр номер 47, ему просто нужно достаточное количество кадров, любые, какие удастся поймать.
00:02:14И если вы пропустите половину из них, это не имеет значения. Передача просто продолжается, пока получатель не соберет
00:02:22достаточно. Но этот подход вовсе не панацея. При таком методе существует предел объема данных,
00:02:29который мы можем передать. По умолчанию отправитель Deciman выдает 2953 байта на кадр при 60 кадрах в секунду.
00:02:37Если вы произведете расчеты, вы получите теоретический предел примерно в 177 килобайт в секунду.
00:02:44Учитывайте накладные расходы на фонтанное кодирование, поскольку некоторые из этих смешанных кадров по сути избыточны по своей конструкции.
00:02:51И в итоге вы получаете цифру, которую на самом деле заявляет файл readme в Deciman.
00:02:56Пиковое значение составляет около 128 килобайт в секунду при измерении при передаче с телефона на телефон.
00:03:02И причина, по которой он использует именно куски по 2953 байта, заключается в том, что это соответствует QR-коду версии 40,
00:03:11самому большому стандартному размеру QR, сетке 177 на 177 из отдельных модулей, упакованных в один кадр.
00:03:20И именно здесь проявляется реальный компромисс. Если вы втиснете больше данных в кадр, вам понадобится меньше кадров
00:03:26в целом для отправки того же файла, а это значит, что любая камера, которая будет считывать его обратно, нуждается в большем разрешении,
00:03:33более твердой руке и более четкой фокусровке, чтобы отличить один модуль от другого.
00:03:38Так что вся система на самом деле представляет собой балансирование между тремя переменными.
00:03:42Сколько кадров в секунду вы отправляете, насколько плотен каждый из этих кадров и насколько хорошо принимающая
00:03:49камера справляется с разрешением этой плотности. И Deciman поставляется с одним конкретным балансом, настроенным по умолчанию,
00:03:57и он настроен для одного конкретного сценария, который, как я обнаружил, не является тем сценарием, в котором тестировал его я.
00:04:03Итак, вот моя установка: экран ноутбука в качестве отправителя, расположенный на обычном расстоянии вытянутой руки,
00:04:09так, как вы бы действительно использовали это на практике. При такой установке моя скорость передачи ограничивалась примерно тремя килобайтами в секунду.
00:04:16Примерно один-два процента переданных кадров фактически декодируются. Остальные захватываются и отбрасываются.
00:04:23Здесь против нас играют три вещи. Первая и самая большая преграда — это несоответствие частоты кадров.
00:04:30Отправитель выдает 60 кадров в секунду, но камера моего телефона снимает при 30. Нельзя запечатлеть 60 отдельных изображений
00:04:38с помощью датчика, который захватывает только 30. И это хуже, чем просто пропуск половины из них, потому что окно экспозиции на каждом
00:04:45захваченном кадре охватывает два разных QR-кода на экране. Так что камера не просто пропускает кадр. Она объединяет их оба во что-то, что расшифровывается как ничто.
00:04:56А в файле main.ts даже есть примечание о том, что iOS будет незаметно выдавать 30 кадров в секунду, даже когда приложение явно запрашивает у камеры 60.
00:05:07Камера просто не дает того, что вы просили, и код уже учитывает это.
00:05:12И чуть ниже в том же файле есть комментарий, который практически предсказывает именно то, что произошло со мной при первой попытке.
00:05:19Значения по умолчанию, то есть 2953 байта на кадр при 60 кадрах в секунду, оптимизированы специально для демонстрации с телефона на телефон с близкого расстояния.
00:05:29И ожидается, что эта же комбинация будет испытывать трудности на обычном мониторе на расстоянии вытянутой руки.
00:05:35Другими словами, проект предупреждал меня об этом. Я просто не прокрутил код достаточно далеко, чтобы увидеть это.
00:05:41С отправляющей стороны 60-герцовая панель ноутбука имеет ту же проблему наоборот. А пикселям ЖК-дисплея требуется много времени для полного перехода цвета от серого к серому.
00:05:51И это время стабилизации означает, что панель не до конца перешла к одному коду, прежде чем следующий начинает накладываться поверх него.
00:05:58Так что вы получаете артефакты в виде шлейфов. А вторая проблема — плотность кода по сравнению с разрешением камеры.
00:06:042953 байта — это QR версии 40, но надежное декодирование требует примерно три-четыре пикселя камеры на модуль, что составляет более 600 пикселей в ширину при резком фокусе исключительно для самого кода.
00:06:20И экран ноутбука на расстоянии вытянутой руки редко заполняет такую часть кадра камеры телефона, тогда как передача с телефона на телефон с близкого расстояния легко заполняет весь видоискатель.
00:06:30Третья проблема — это яркость и контрастность. Это второстепенный вопрос, но помогает, если бинаризатор получателя четко определяет порог изображения, но он все равно не может исправить несоответствие частоты кадров или код слишком маленького размера.
00:06:44Итак, давайте попробуем выполнить ту же передачу, но на этот раз с одного телефона на другой.
00:06:50Единственное, что меняется, — это отправитель. Это маленький яркий OLED-экран, удерживаемый близко и заполняющий весь кадр принимающего телефона.
00:06:58Теперь камера действительно может приблизиться к своей реальной частоте кадров.
00:07:02Код заполняет кадр в высоком разрешении, и нет необходимости бороться со шлейфами ЖК-дисплея.
00:07:07Это тот сценарий, при котором измерялось значение в 128 килобайт в секунду в файле readme.
00:07:14В коде получателя также есть небольшая, но действительно полезная деталь.
00:07:18Он сообщает частоту кадров захвата и частоту кадров декодирования раздельно. Захват говорит нам о том, что камера видит физически.
00:07:26Декодирование показывает, какая часть из этого действительно применима.
00:07:30Когда эти два числа начинают расходиться, например, захват остается в норме, а декодирование падает,
00:07:35вы сталкиваетесь с несоответствием между плотностью кадров и тем, что камера действительно может разрешить на таком расстоянии.
00:07:42Так что, если ваш реальный вариант использования — это ноутбук-телефон, решением будет перебалансировка этих трех переменных на стороне отправителя.
00:07:50Вам следует снизить количество байт на кадр до 1465, что соответствует более крупной версии QR с большими и более прощающими ошибки модулями.
00:07:59И затем уменьшить частоту кадров передачи до 24, намеренно опустившись ниже предела камеры в 30 кадров в секунду.
00:08:07Таким образом, кадры будут считываться четко по одному, вместо того чтобы смешиваться друг с другом.
00:08:12И как вы можете видеть, снижение этих показателей дает гораздо большую пропускную способность.
00:08:16Это просто показывает, что оптическая передача файлов — не универсальное решение.
00:08:21Вам приходится вручную настраивать параметры для каждого случая использования в зависимости от используемого оборудования.
00:08:26Вот такие дела, друзья.
00:08:27Таковы основные черты Deciman.
00:08:29В целом, это был действительно интересный проект для изучения.
00:08:32Оптическая передача файлов — довольно крутая технология.
00:08:36И было очень интересно увидеть применение концепции фонтанного кодирования в реальном сценарии.
00:08:44И пока я изучал этот проект, я также думал, где вообще можно использовать такой инструмент?
00:08:49Думаю, очевидный ответ — для изолированных систем (air-gapped), где вы намеренно не хотите иметь никакого сетевого подключения.
00:08:57Или, может быть, для устройств, у которых вообще нет Bluetooth или Wi-Fi, таких как старое оборудование или встраиваемые системы.
00:09:04Я имею в виду везде, где экран и камера — это единственное, на что вы можете положиться.
00:09:10Но что вы думаете об этом инструменте?
00:09:11Использовали ли вы инструменты оптической передачи раньше?
00:09:14Видите ли вы какое-либо реальное применение для этого?
00:09:17Дайте нам знать в комментариях ниже.
00:09:19И друзья, если вам нравятся такие технические разборы, дайте мне знать, нажав кнопку лайка под видео.
00:09:25А также не забудьте подписаться на наш канал.
00:09:28С вами был Андрус из BetterStack, и увидимся в следующих видео.
00:09:34Увидимся в следующем видео.

Key Takeaway

Оптическая передача файлов через инструмент Deciman использует фонтанное кодирование и мигающие QR-коды для обмена данными со скоростью до 128 килобайт в секунду без сетевого подключения или физических накопителей.

Highlights

  • Инструмент Deciman передает файлы между устройствами без интернета и физических накопителей с помощью потока QR-кодов со скоростью до 128 килобайт в секунду.

  • Фонтанное кодирование делит файл на неограниченный поток математически смешанных кадров, позволяя восстановить данные даже при потере половины пакетов.

  • Размер QR-кода версии 40 содержит 2953 байта данных в сетке 177 на 177 пикселей при максимальной плотности кадра.

  • Передача данных с экрана ноутбука на телефон ограничивается тремя килобайтами в секунду из-за аппаратного несоответствия частоты кадров и шлейфов ЖК-панели.

  • Снижение параметров до 1465 байт на кадр и 24 кадров в секунду стабилизирует оптическую передачу при использовании мониторов.

Timeline

Принцип работы оптической передачи файлов

  • Инструмент Deciman передает файлы между устройствами посредством отображения и считывания последовательности QR-кодов с экрана на камеру.
  • Технология функционирует полностью автономно без использования традиционного сетевого стека и физических накопителей вроде USB-флешек.
  • Аппаратные ограничения экранов и камер приводят к рассинхронизации и потере кадров при прямой передаче данных.

Передача данных в изолированных системах реализуется через оптический канал связи. Устройство-отправитель выводит поток кадров, а камера принимающего устройства декодирует их обратно в исходный файл. Различная скорость обновления экранов и затвора камер создает риск повреждения пакетов при отсутствии синхронизации.

Фонтанное кодирование и технические ограничения

  • Фонтанное кодирование генерирует бесконечный поток кадров как математическую смесь частей файла, делая каждый отдельный кадр взаимозаменяемым.
  • Теоретический предел пропускной способности составляет 177 килобайт в секунду при выдаче 2953 байт на кадр на частоте 60 кадров в секунду.
  • Пиковое значение скорости при передаче с телефона на телефон достигает 128 килобайт в секунду.

Проблема потери кадров решается с помощью фонтанного кодирования. Получателю не требуется конкретный порядковый номер кадра, достаточно собрать любое достаточное количество избыточных математических блоков. Использование QR-кода версии 40 задает максимальный размер пакета в 2953 байта, требуя баланса между плотностью данных и разрешением камеры.

Тестирование передачи с ноутбука и аппаратные проблемы

  • Передача данных с экрана ноутбука на телефон ограничивается тремя килобайтами в секунду с успешным декодированием всего одного-двух процентов кадров.
  • Несоответствие частоты кадров отправителя в 60 герц и камеры телефона в 30 герц приводит к наложению изображений друг на друга.
  • Медленное время перехода цвета ЖК-панели создает визуальные шлейфы, а малое расстояние до экрана снижает читаемость плотного QR-кода.

Практическое тестирование с использованием экрана ноутбука выявляет серьезные барьеры в виде аппаратных ограничений. Камера захватывает промежуточные состояния экрана, объединяя два разных QR-кода в нечитаемый мусор. Дополнительные трудности возникают из-за времени отклика пикселей ЖК-дисплея и недостаточного разрешения камеры при удаленном расположении.

Оптимизация параметров и сценарии применения

  • Передача с мобильного телефона на телефон задействует яркий OLED-экран и обеспечивает стабильные 128 килобайт в секунду.
  • Уменьшение размера пакета до 1465 байт и снижение частоты до 24 кадров в секунду решают проблемы совместимости при работе с мониторами.
  • Оптическая передача файлов применяется в изолированных системах (air-gapped) и на старом оборудовании без модулей беспроводной связи.

Использование OLED-экрана смартфона устраняет проблемы со шлейфами и позволяет камере работать на штатной частоте. Для стабильной работы с ноутбуками требуется ручная перенастройка параметров в сторону более крупных модулей и низкой частоты кадров. Технология находит практическое применение исключительно в средах с полным отсутствием сетевой инфраструктуры.

Community Posts

View all posts