Обмен данными через звук - как работает wave-share

11 Dec, 2020

Репозиторий давно не обновлялся

Последнее обновление было 5 лет назад.

2,308
🔱 147
👥 38

Представьте ситуацию: вам нужно быстро передать файл с ноутбука на телефон коллеги, но под рукой нет ни флешки, ни стабильного интернета, а Bluetooth почему-то не работает. Знакомо? Именно такие проблемы решает проект wave-share — необычная технология обмена данными через обычные динамики и микрофоны устройств.

Что такое wave-share?

Wave-share — это экспериментальный проект, который использует звуковые волны для установки P2P-соединения между устройствами. По сути, это реализация WebRTC-сигналинга через звук, где устройства «договариваются» о соединении, обмениваясь данными в виде аудиосигналов.

Ключевые преимущества:

  • Не требует серверов — полностью peer-to-peer решение
  • Работает в браузере — не нужно устанавливать приложения
  • Использует только микрофон и динамики — никакого специального оборудования

Как это работает?

Технология использует модифицированную версию частотной модуляции (FSK) для кодирования данных в звуковые сигналы. Процесс соединения выглядит так:

  1. Устройство A кодирует свои сетевые данные (IP, порты, идентификаторы) в последовательность звуковых тонов
  2. Устройство B «слышит» эти тоны через микрофон и декодирует их обратно в данные
  3. Устройство B отвечает своим набором тонов с собственными сетевыми параметрами
  4. После успешного обмена данными устанавливается прямое P2P-соединение по LAN

Схема работы wave-share

Реклама

Где это можно использовать?

Хотя проект позиционируется как proof-of-concept, у него есть несколько интересных практических применений:

  1. Быстрый обмен файлами в условиях плохого интернета
  2. Офлайн-связь между устройствами в одном помещении
  3. Образовательные проекты по изучению передачи данных
  4. IoT-устройства для простой настройки без интерфейсов

Технические особенности

Проект использует несколько интересных технических решений:

  • Оптимизированный SDP — передаются только минимально необходимые данные для установки соединения
  • Многоканальная FSK-модуляция — одновременная передача нескольких битов в разных частотных диапазонах
  • Коррекция ошибок — встроенные ECC-байты для защиты от помех

Пример структуры передаваемого аудиопакета:

| Размер | Описание                  |
|--------|---------------------------|
| 1 байт | Тип SDP (Offer/Answer)    |
| 1 байт | Размер пакета             |
| 4 байта| IP-адрес                  |
| 2 байта| Порт                      |
| 32 байта| SHA-256 отпечаток сессии |
| 40 байт| ICE-учетные данные        |
| 32 байта| ECC для коррекции ошибок |

Ограничения и перспективы

Как и у любой экспериментальной технологии, у wave-share есть свои ограничения:

  • Работает только между близко расположенными устройствами
  • Зависит от качества микрофонов и динамиков
  • Не поддерживается всеми браузерами (особенно Safari)

Однако автор проекта уже развивает идею в отдельной библиотеке ggwave, что открывает новые возможности для интеграции этой технологии в другие проекты.

Стоит ли попробовать?

Если вы:

  • Любите экспериментировать с необычными технологиями
  • Разрабатываете решения для офлайн-сценариев
  • Интересуетесь альтернативными способами передачи данных

...то wave-share определённо заслуживает вашего внимания. Проект доступен для тестирования прямо в браузере: ggerganov.github.io/wave-share

Как показывает практика, иногда самые интересные решения рождаются на стыке технологий — и wave-share прекрасный тому пример, сочетающий WebRTC, обработку звука и P2P-коммуникацию в одном изящном решении.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.