02 / Rust-бібліотека · оптичний формат · вебсканер

WaveCode.

Оптичний код для музики та відео, Rust SDK і вебсканер.

РольАвтор і розробник
СтанАктивна розробка
КороткоOpen-source SDK та сканер
wavecode
V1 / OPTICAL MEDIA CODE
A REAL DECODABLE FRAME Real 36-column encoded WaveCode frame, generated by the author's Rust library
36 COLUMNSRUST · SVG
ENCODE / SCAN / OPENRUST-ENCODED SAMPLE

Приклад WaveCode V1. Валідний оптичний кадр, створений Rust-кодером.

Про проєкт

Оптичний формат для медіапосилань

WaveCode — оптичний формат для медіапосилань. Невеликий код із заокруглених смуг містить ідентифікатор треку або відео й, якщо платформа підтримує, початковий таймкод. Для декодування не потрібна власна база треків на сервері.

Я розробив Rust-бібліотеку, інструменти кодування й декодування, нативні прив’язки та окремий вебзастосунок для сканування й генерації. У браузері працює та сама Rust-реалізація, скомпільована у WebAssembly, без дублювання алгоритму на TypeScript.

Моя робота

Що я розробив

  • Оптичний формат V1, перевірка кадру, корекція помилок і декодування.
  • Rust API, CLI, FFI/JVM-прив’язки та інтерфейс WebAssembly.
  • Мобільний сканер і генератор: камера, фотографії, експорт SVG/PNG.
Приклад реалізації

Як кодується медіапосилання

На сторінці показаний справжній WaveCode, згенерований Rust-бібліотекою. Це не логотип: у висотах смуг записані дані.

WAVECODE / V136 COLUMNS
Справжній оптичний код, сформований Rust-бібліотекою WaveCode
Зразок з офіційної Rust-бібліотеки Перевірити в сканері
01

Аналіз посилання

Кодер розпізнає платформу й виділяє ідентифікатор. Таймкод зберігається лише тоді, коли платформа підтримує відповідний формат посилання.

02

Формування кадру

Ідентифікатор пакується у версіоноване представлення з перевіркою цілісності та надлишковими даними для корекції помилок.

03

Генерація

Дані відображаються у 36 дворядних колонках, а готовий код експортується в SVG або PNG. Між рядами залишається постійний вільний канал.

04

Локальне сканування

Rust-декодер через WebAssembly обробляє кадр камери або завантажене фото в браузері й відновлює посилання на оригінальну платформу.

Браузер не відправляє фотографію на сервер розпізнавання, а кодек не звертається до власної бази треків.

Сканер і генератор

Спробувати WaveCode

Живе сканування камерою, імпорт фото, створення кодів та експорт SVG/PNG — у повноцінному вебзастосунку.

Відкрити застосунок
Технічні рішення

Технічні деталі

01

Формат і корекція помилок

V1 має фіксовану рамку із 36 колонок. Вона містить інформацію для визначення орієнтації, контрольну суму й Reed–Solomon-корекцію помилок. Декодер підтримує обидві орієнтації та може відновлювати частину пошкоджених символів, хоча розмиття й сильна перспектива все ще заважають.

Геометрію зробив стабільною, щоб інформація не залежала від декоративного оформлення. Це важливо, коли той самий код друкується, відображається на екрані або переноситься на невеликий фізичний предмет.

02

Одна реалізація на Rust

Публічна Rust-бібліотека відповідає за кодування й декодування. Її API доступний із CLI, нативних прив’язок та WebAssembly. Вебзастосунок викликає кодек через worker, тому обробка зображень не блокує інтерфейс.

Так не доводиться підтримувати кілька незалежних декодерів із ризиком різної поведінки. Версіонування дозволяє вдосконалювати формат без прихованої зміни значення старих кодів.

03

Сканер і користувацький досвід

Вебверсія підтримує сканування камерою, завантаження фото, створення коду з посилання та експорт справжніх SVG/PNG. Сканер перевіряє різні масштаби й фрагменти зображення, а на підтримуваних пристроях доступні вибір камери та ліхтарик.

Усі зображення обробляються локально. Через обмеження камер, експозицію та розмиття не кожний кадр буде прочитаний, тому є альтернативне завантаження фото.

Технології
RustWebAssemblyTypeScriptReact
Результат

Що вийшло

Бібліотека і браузерний сканер уже працюють, але я продовжую їх вдосконалювати. Повний цикл генерації, сканування та експорту доступний в окремому вебзастосунку; на портфоліо є валідний приклад і перехід до нього.

WaveCode підтримує музичні сервіси та вибрані відеоплатформи, зокрема YouTube, TikTok й Instagram Reels. Проєкт відкритий, а для роботи формату не потрібен власний сервіс ідентифікаторів треків.

Наступний проєктC7xBotManager