Что такое Goke SDK?

📦 Где это реально используется:
Камеры с SoC Goke GM8136, GM8137, GM8135S

Бюджетные китайские модели:
Jooan, INQMEGA, SDETER, Escam, Tuya, V380 Pro, iCSee

Протоколы: XMeye, CloudSEE, Gwell, Goke P2P, иногда — UCloud SDK

🔐 Почему это закрыто:
Производители получают SDK от Goke под NDA
Нет публичного доступа ни к SDK, ни к документации
Открытая разработка невозможна без реверса или утечек

Цель

Как сделать

Получить поток

Через RTSP (если включён в прошивке)

Анализ трафика

Wireshark + фильтр по порту камеры

Захват Annex-B

Снифить поток, сохранить .h265 и декодировать через FFmpeg

Альтернатива

Использовать ONVIF-поток и трансмодерировать


Камеры, подключённые к iCSee или YooSee, передают видеопоток с кодеком H.265 не по стандартному RTSP, а через закрытый облачный протокол, основанный на P2P или прямом NAT-соединении. Приложение на телефоне принимает этот поток по собственному протоколу (например, Xmeye, Goke, Gwell, UCloud) и аппаратно декодирует H.265 на устройстве.

Свойство

Детали

📍 Производитель

Goke Microelectronics (Shenzhen, China)

🎥 Аппаратная платформа

Чипы GM8136, GM8135, GM8137, и др.

📡 Сетевые возможности

RTSP, P2P (облачный), ONVIF, HTTP API

📹 Видеокодеки

H.264, H.265 (в большинстве — HEVC Main Profile)

⚙️ SDK включает

Камерный RTOS, потоковое API, управление событиями, PTZ и др.

📼 Хранилище

Работа с TF-картами, SD-картами, облачное хранилище


🔒 Почему это важно:

Большинство камер iCSee, YooSee, Tuya, V380 и клонов используют Goke SDK или его производные
  • Протоколы передачи данных — частично закрыты, нестандартны и не всегда совместимы с VLC/FFmpeg
  • Внутренний видеопоток передаётся в виде сырых NAL-блоков (Annex-B) по UDP/TCP/P2P

🔍 Что такое Annex-B NAL Units?

NAL (Network Abstraction Layer)
Units — это фундаментальный способ упаковки видеоданных в кодеках H.264 и H.265.
📚 Annex-B — это один из двух форматов представления NAL-блоков, описанный в приложении B стандарта H.264/265.

🔹 Annex-B структура Видео разбито на NAL-блоки (кадры, SPS, PPS, IDR и др.)
Каждый блок начинается с start code:

00 00 01 или 00 00 00 01

Пример:
00 00 00 01 67 ... → SPS (Sequence Parameter Set)
00 00 00 01 68 ... → PPS (Picture Parameter Set)
00 00 00 01 65 ... → IDR (ключевой кадр)

🔹 Альтернатива: AVC/HEVC in MP4 (AVCC)

  • В контейнере MP4, HLS и других стримах часто используется не Annex-B, а формат AVCC (length-prefixed): [length][NAL Unit]
  • FFmpeg, HTML5 <video>, HLS и т.д. не всегда работают с Annex-B напрямую — приходится декодировать или трансмультиплексировать.

📡 Как Annex-B NAL units передаются с камеры? 📱

В мобильные приложения (iCSee, YooSee):Камера передаёт H.265 поток в виде:
Annex-B NAL-блоков обернутых в бинарные сообщения облачного протокола (P2P или socket)
Приложение на телефоне (через MediaCodec, AVFoundation) напрямую читает поток и отдает его на GPU-декодер
🧪 Если ты снифишь трафик:
Там будет что-то вроде: ...00 00 00 01 42 01 01 01... (типичный NAL start code)

🔧 Как работать с такими потоками?📦
Если получаешь такой поток на сервере — его нужно подавать в FFmpeg как сырой вход (rawvideo) или через pipe:
ffmpeg -f hevc -i stream.hevc -c:v libx264 output.mp4

🔁 Или мультиплексировать его в MP4/TS:
ffmpeg -f hevc -i raw_annexb.h265 -c copy output.mp4

📲 В мобильном приложении — просто отправляется массив NAL’ов в аппаратный декодер (MediaCodec.decode(), и он магически справляется)

Вопрос

Ответ

Что такое Goke SDK?

SDK для камер на чипах Goke — включает обработку видео, сетей и облака

Что такое Annex-B NAL Units?

Это структура H.264/265 потока с разделителями 00 00 00 01

Где это используется?

В дешёвых китайских IP-камерах, приложениях iCSee/YooSee

Можно ли использовать напрямую?

Да, но нужен ручной парсинг или трансмультиплексирование в MP4/TS



Вот простой скрипт, который читает "сырые" NAL-блоки в Annex-B, кодирует их в MP4 и отдает через HLS для браузера.

✅ принимаем H.265-поток в Annex-B формате (NAL Units) с камеры или файла,
✅ преобразуем его в H.264 в контейнере MP4,
✅ и дополнительно генерируем HLS-поток (.m3u8 + .ts) для браузера.

📜 Скрипт: convert.sh

#!/bin/bash

# === Входной файл с H.265 в Annex-B ===
INPUT="raw_input.h265"

# === Папка для вывода HLS ===
OUTDIR="./output"
mkdir -p "$OUTDIR"

# === Команда FFmpeg ===
ffmpeg -y -f hevc -i "$INPUT" \
-c:v libx264 -preset ultrafast -tune zerolatency \
-f hls \
-hls_time 2 \
-hls_list_size 4 \
-hls_flags delete_segments+append_list \
-hls_segment_filename "$OUTDIR/segment_%03d.ts" \
"$OUTDIR/stream.m3u8"

📥 Как получить
raw_input.h265 из камерыЕсли у тебя есть прямая бинарная подача NAL-блоков (например, через сокет, WebRTC datachannel или от SDK):
cat > raw_input.h265

Или использовать netcat, если камера шлёт через UDP/TCP:
nc -l -p 9000 > raw_input.h265

🧪 Пример запуска
chmod +x convert.sh ./convert.sh

🔗 HTML для сайта
<div id="player"></div>
<script src="https://cdn.jsdelivr.net/npm/@clappr/player@latest/dist/clappr.min.js"></script>
<script>
new Clappr.Player({
source: "output/stream.m3u8",
parentId: "#player",
autoPlay: true,
width: "100%",
height: 480
});
</script>

Лучшие 5 программ для видеонаблюдения

1. SmartVision: Программа для видеонаблюдения с встроенной видеоаналитикой. Система поддерживает распознавание лиц и номерных знаков, а также различает людей и животных. Интегрируется с облачным сервисом видеонаблюдения для передачи событий, например, когда в кадре появляется человек.

2. Blue Iris: Предоставляя профессиональный опыт, Blue Iris – это программное обеспечение, которое позволяет подключать несколько камер разных производителей, легко интегрируясь с устройствами умного дома. Среди его впечатляющих функций – обнаружение движения, оповещения по электронной почте и поддержка звука, а также возможность дополнительной настройки с помощью плагинов сторонних разработчиков.

3. iSpy: Это программное обеспечение с открытым исходным кодом, предлагающее множество функций, включая обнаружение движения, поддержку аудио и интеграцию с облачным хранилищем. Совместимо как с Windows, так и с Mac, поддерживает множество камер, от IP-камер до веб-камер.

4. iVMS-4200: Специально разработанное ПО для видеорегистраторов Hikvision. Это программное обеспечение управляет и хранит видео с IP-камер Hikvision. Не поддерживает камеры сторонних производителей.

5. Dahua SmartPSS: Разработанное компанией Dahua Technology, известным производителем оборудования для видеонаблюдения, это программное обеспечение поддерживает камеры Dahua и другие камеры, соответствующие стандарту ONVIF. Оно предоставляет функции просмотра в режиме реального времени, воспроизведения и управления событиями.

В заключение, выбор оптимального программного обеспечения для видеонаблюдения зависит от ваших индивидуальных требований и типов камер, которые вы используете. SmartVision выделяется как бесплатное и гибкое решение с передовыми функциями, такими как распознавание лиц и номерных знаков. С другой стороны, альтернативы, такие как Blue Iris, предлагают свои уникальные особенности и возможности.