
Ключевые выводы
• Сначала выбирайте протокол, потом библиотеку. RTSP даёт задержку 1–2 с при использовании с Media3 и тонкой настройке буферов; WebRTC через мост go2rtc или MediaMTX снижает её до менее чем 500 мс; LL-HTTP — запасной вариант для устройств, которые не справляются с первыми двумя.
• ONVIF — это инструмент обнаружения, а не способ передачи видео. С помощью Profile S находите камеры и получайте RTSP URI, а затем передавайте поток в Media3 или libwebrtc. Не запускайте WS-Discovery без блокировки WifiManager — это самая распространённая тихая ошибка, с которой сталкиваются клиенты.
• H.264 — безопасный выбор по умолчанию, H.265 — ловушка. Около 35% Android-устройств до сих пор не поддерживают аппаратное декодирование HEVC; договаривайтесь с камерой о подпотоке в H.264, если он доступен, или предусматривайте программный декодинг и его влияние на расход батареи.
• Соответствие требованиям — это не косметика, а объём работ. Сроки хранения по GDPR, аудиты CCPA 2026 и штрафы BIPA от 75 до 375 тысяч рублей за каждое нарушение в сфере распознавания лиц диктуют архитектуру системы — закладывайте это в спецификацию или заплатите потом.
• Реалистичный MVP укладывается в 8–12 недель. Подход Форсофт к инженерии с агентами помог выпустить видеоплатформу более чем на 1 млн строк кода на 40% быстрее, чем раньше; на том же стеке MVP Android-приложения для IP-камер при разумном объёме стоит 2,2–5,2 млн ₽.
Зачем Фора Софт написала этот плейбук по Android и IP-камерам
Фора Софт разрабатывает программное обеспечение для видеонаблюдения уже более 20 лет. Наша платформа V. A. L. T. используется в полицейских участках, судах и медицинских клиниках: до 9 синхронизированных HD-потоков на экране, полный PTZ-управление и двусторонняя аудиосвязь. Каждое внедрение начиналось с одного и того же вопроса: как передать чистое видео с IP-камеры в мобильное приложение, не увеличив задержку и не нарушая безопасность.
Этот гид — тот же плейбук, который мы передаём техническим руководителям до подписания договора на работу с Android и IP-камерами. Здесь — выбор протокола, библиотек, нюансы ONVIF, подводные камни кодеков и требования, которые почти всегда упускают на этапе оценки. Всё проверено на реальных клиентских проектах, а не скопировано с README на GitHub.
Если вы продакт-менеджер, оценивающий Android-вьюер, CTO, проводящий аудит приложения, или ведущий инженер, которому нужно второе мнение — материал для вас. Более широкую картину о том, как мы строим продукты, мы регулярно публикуем: про разработку VMS на заказ, про архитектуру AI-видеонаблюдения и про кейс перестройки платформы более чем на 1 млн строк кода на 40% быстрее с использованием инженерии на основе агентов.
Планируете интеграцию IP-камер в Android-приложение?
Разберём ваши целевые камеры, топологию сети и требования к задержке за 30 минут — и вернёмся с конкретным выбором протокола, библиотеки и сроком поставки.
Решение за 60 секунд
Если вам нужно в 2026 году выпустить Android-приложение, которое смотрит, записывает и управляет IP-камерой, стек по умолчанию такой: ExoPlayer (Media3 1.9.2) с модулем-источником RTSP для работы в одной локальной сети, libwebrtc для удалённого доступа и go2rtc или MediaMTX в роли моста. ONVIF используйте только для обнаружения камер и управления поворотом (PTZ), но никогда — как способ передачи видео. К LL-HTTP Live Streaming стоит обращаться лишь тогда, когда нужно поддерживать старые устройства или работать в слабых сетях.
Всё остальное в статье — как мы пришли к этой рекомендации и в каких случаях от неё стоит отклоняться. Если у вас особые требования — например, тепловизионные камеры, большой парк PTZ-камер или жёсткие условия по локализации данных — таблицы сравнения и фреймворк решения помогут выбрать подходящий вариант.
Что изменилось для Android-приложений с IP-камерами в 2025–2026
1. Media3 пришёл на смену ExoPlayer. Media3 1.9.2 от Google теперь — основная платформа для работы с RTSP, HLS, DASH и SmoothStreaming. Из коробки поддерживает H.264 + AAC, а при правильной настройке буферов обеспечивает задержку RTSP 1–2 с без написания собственного кода.
2. Правила для foreground service ужесточились. В Android 14 появились обязательные объявления foregroundServiceType; Android 15 их строго проверяет. Сервисы, которые воспроизводят видео в фоне, должны указать mediaPlayback, иначе приложение не пройдёт проверку в Play Store.
3. Мосты RTSP → WebRTC выросли. go2rtc и MediaMTX отлично работают на Raspberry Pi, обрабатывают десятки потоков и транслируют WebRTC с задержкой менее 500 мс. Два года назад для такой задачи требовался целый кластер Kurento.
4. CCPA 2026 вступил в силу 1 января. Оценка рисков для приватности и аудит кибербезопасности теперь обязательны для компаний, превышающих определённые пороговые значения; приложения, близкие к видеонаблюдению, почти всегда эти пороги превышают.
5. AV1 на мобильных устройствах пока сырой. Облачные кодировщики вроде AWS Elemental MediaConvert получили поддержку AV1, но декодирование AV1 на Android-устройствах работает неравномерно. H.264 по-прежнему остаётся самым надёжным выбором — он «везде поедет»; H.265/HEVC всё так же не работает примерно на трети устройств.
Сравнение протоколов: RTSP, ONVIF, WebRTC, HLS, LL-HTTP
Выбирайте протокол, исходя из вашего бюджета, допустимой задержки, профиля сети и используемых устройств — а не потому, что на нём работает демо от производителя камер.
| Протокол | Типичная задержка | Поддержка на Android | Когда использовать | На что обратить внимание |
|---|---|---|---|---|
| RTSP (UDP) | 2–3 с по умолчанию, 1–2 с после настройки | Источник RTSP в Media3 | Одна локальная сеть, чистый канал | Файрвол и обход NAT |
| RTSP (TCP interleaved) | 2–3 с | Media3 (setForceUseRtpTcp) |
Корпоративный или гостиничный Wi-Fi | Чуть больше накладных расходов |
| ONVIF (S / T / G / M) | Н/Д — обнаружение и управление | WS-Discovery + SOAP; RootSoft/ONVIF-Java | Поиск камер, PTZ, событий | Блокировка WifiManager; особенности вендоров |
| WebRTC | < 500 мс | libwebrtc Android SDK | Удалённый просмотр и управление в реальном времени | Стоимость эксплуатации STUN/TURN/моста |
| HLS | 6–10 с | Media3, MediaPlayer | VOD, очень слабые сети | Потолок задержки |
| LL-HLS | 2–6 с | Media3 2.18+ | Разнородный парк устройств, запасной маршрут | Сложность сервера, настройка |
Берите RTSP, когда: приложение и камера находятся в одной локальной сети, задержка меньше секунды не требуется, и вы хотите быстро начать работу с Media3.
Берите WebRTC, когда: пользователи находятся в удалённых точках и подключены через интернет, нужна задержка меньше 500 мс для управления PTZ или видеонаблюдения в режиме допроса, и вы готовы развернуть мост на go2rtc или MediaMTX.
Берите LL-НЛС, когда: парк устройств старый, задержка 2–6 с допустима и важна экономия на CDN при сегментированной доставке.
RTSP-библиотеки для Android: Media3, LibVLC, IJKPlayer, GStreamer
Если вы выбрали RTSP, следующий шаг — выбор библиотеки. Вот как мы оцениваем варианты в 2026 году.
| Библиотека | Лицензия | Задержка после настройки | Сильная сторона | Когда пропустить |
|---|---|---|---|---|
| Media3 / ExoPlayer RTSP | Apache 2.0 | 1–2 с | Официальная; минимальный прирост размера APK; отличная поддержка DRM | Только H.264+AAC из коробки |
| LibVLC Android | LGPL | 2–3 с | Богатый набор кодеков; нестандартные форматы работают «из коробки» | Раздувание APK на ~10–20 МБ |
| IJKPlayer (Bilibili) | LGPL + кастомная | 1–2 с | FFmpeg под капотом; низкоуровневые настройки | Поддержка замедлилась |
| rtsp-android (pedroSG94) | Apache 2.0 | 1–2 с | Хорошо сочетается с push и рестримингом | Это не полноценный UX плеера |
| GStreamer Android | LGPL | 1–3 с | Сила пайплайнов; собственный транскодинг | Сложная сборка; долгий разгон команды |
В 80% наших Android-проектов с IP-камерами мы используем Media3. Он бесплатный, официальный, отлично работает на новых версиях Android и даёт возможность гибко настраивать буферы. Ниже — минимальный код на Kotlin, который снижает задержку RTSP до примерно 1 секунды на современных устройствах.
val loadControl = DefaultLoadControl.Builder()
.setBufferDurationsMs(
/* min = */ 100,
/* max = */ 500,
/* playbackBufferMs = */ 100,
/* playbackAfterRebufferMs = */ 200
)
.build()
val mediaSource = RtspMediaSource.Factory()
.setForceUseRtpTcp(true) // firewall-friendly
.setDebugLoggingEnabled(BuildConfig.DEBUG)
.createMediaSource(MediaItem.fromUri(rtspUrl))
val player = ExoPlayer.Builder(context)
.setLoadControl(loadControl)
.build()
player.setMediaSource(mediaSource)
player.prepare()
player.playWhenReady = true
ONVIF на Android: обнаружение, PTZ и ловушка WifiManager
ONVIF — это открытый стандарт, который позволяет единообразно обнаруживать камеры, получать их RTSP URI, управлять PTZ и работать с событиями. На практике важны четыре профиля: S — для массового видеонаблюдения, T — для тепловизионных камер, G — для премиальных PTZ (например, скоростных купольных) и M — для метаданных и аналитики. Большинство потребительских и камер для малого и среднего бизнеса соответствуют Profile S.
| Профиль | Назначение | PTZ | Типичные камеры |
|---|---|---|---|
| S (Streaming) | Массовое IP-видеонаблюдение | Базовый | Hikvision, Dahua, Axis, Amcrest |
| T (Advanced streaming) | H.265, обработка изображения, аудио | Базовый | Современные модели H.265 от Hikvision и Dahua, часть тепловизионных |
| G (Recording) | Запись на устройстве, экспорт | Полный | Hikvision PTZ, Axis Q-серия |
| M (Metadata / analytics) | События, метаданные объектов | Полный | Премиальные аналитические камеры Hikvision/Dahua |
Главная Android-специфичная ловушка ONVIF. WS-Discovery использует multicast UDP на порту 3702. На Android вы обязаны держать WifiManager.MulticastLock на время обнаружения, иначе ОС молча выкидывает multicast-пакеты. Симптом: на ноутбуке обнаружение работает, на телефоне возвращает ноль камер. Каждый раз.
val wifi = getSystemService(Context.WIFI_SERVICE) as WifiManager
val multicastLock = wifi.createMulticastLock("onvif-discovery").apply {
setReferenceCounted(true)
acquire()
}
try {
val devices = OnvifManager().discoverAsync(timeoutMs = 4000)
// map devices -> GetStreamUri -> Media3 RtspMediaSource
} finally {
multicastLock.release()
}
Для реальной SOAP-обвязки RootSoft/ONVIF-Java — это зрелый и удобный для Android вариант. Если вам нужна поддержка PTZ сложнее базового поворота по горизонтали и вертикали, обязательно проверьте её работу на конкретной модели камеры — поддержка ONVIF у производителей неравномерная, особенно за пределами Profile S.
WebRTC: как добиться задержки менее 500 мс с помощью go2rtc или MediaMTX
RTSP по сути не может обеспечить задержку ниже 1 с в условиях шумного потребительского интернета. Когда оператору безопасности нужно управлять камерой через PTZ, зафиксировать быстрое событие или начать двусторонний аудиообмен — нужен WebRTC.
Современный ответ — не пишите свой SFU. Запустите go2rtc или MediaMTX на небольшой виртуальной машине (для десятков камер хватит сервера уровня Hetzner AX или дроплета DigitalOcean), настройте их на RTSP-источники и раздавайте через WebRTC. Оба проекта с открытым кодом, активно развиваются и стабильно работают с задержкой менее 500 мс даже на обычных потребительских сетях.
go2rtc — лёгкое решение: один бинарник, конфигурация в формате YAML, встроенный веб-интерфейс для быстрой проверки, отлично работает на Raspberry Pi 4. MediaMTX (бывший rtsp-simple-server) чуть тяжелее, но помимо WebRTC поддерживает SRT, RTMP, HLS и LL-LLS — выбирайте его, если нужен выход по нескольким протоколам.
На Android используйте WebRTC через стандартный libwebrtc Android SDK. Если хотите разобраться, в чём разница между собственным WebRTC и готовыми SDK, ознакомьтесь с нашим разбором архитектуры WebRTC и стоимости.
Реальность кодеков: H.264 везде, H.265 с оговорками, AV1 ещё не везде
Камеры по умолчанию используют H.265 ради экономии полосы пропускания; у Android-устройств до сих пор много моделей без аппаратного декодирования HEVC. Когда примерно треть пользователей вынуждена использовать программный декодинг, начинаются всплески нагрузки на CPU, быстрый разряд батареи и тепловой троттлинг уже к десятой минуте работы.
Наше правило: выбирайте подпоток H.264 с камеры (большинство моделей Hikvision, Dahua и Axis его поддерживают), проверяйте MediaCodecList перед подключением к потоку и переключайтесь на LL-HTTP Live Streaming с транскодированием на сервере, если устройство не поддерживает HEVC, а камера передаёт только H.265. AV1 пока не стоит использовать как основной кодек на Android для IP-камер — оставьте его на будущее, скажем, на 2027 год.
fun supportsHardwareHevc(): Boolean {
val list = MediaCodecList(MediaCodecList.REGULAR_CODECS)
return list.codecInfos.any { info ->
!info.isEncoder && info.isHardwareAccelerated &&
info.supportedTypes.any { it.equals("video/hevc", ignoreCase = true) }
}
}
Бюджеты по полосе пропускания и питанию для различных разрешений
Конкретные цифры, на которые стоит ориентироваться — каждый тикет вроде «почему так лагает», который мы разбирали, сводился к одной из этих строк.
| Разрешение / fps | Битрейт H.264 | Битрейт H.265 | Типичное применение |
|---|---|---|---|
| 480p / 15 fps | 0,6–1 Мбит/с | 0,3–0,6 Мбит/с | Превью-плитки, стены 3×3 |
| 720p / 30 fps | 3–4,5 Мбит/с | 1,5–2,5 Мбит/с | Стандартный просмотр в реальном времени |
| 1080p / 30 fps | 5–6 Мбит/с | 3–4 Мбит/с | Разбор доказательств, PTZ |
| 1080p / 60 fps | ~8 Мбит/с | 4–5 Мбит/с | Спорт с резкими движениями, промышленные сцены |
| 4K / 30 fps | 20–25 Мбит/с | 10–15 Мбит/с | Криминалистическая запись на флагманской IP-камере |
На устройстве рассчитывайте, что воспроизведение 1080p H.264 расходует 4–6% заряда батареи в час на среднем Android-смартфоне с включённым экраном. Долгий просмотр в реальном времени требует работы в фоне (foreground service), политики wakelock и интерфейса, который приглушает звук или снижает разрешение, когда пользователь сворачивает приложение.
Фоновый стриминг: правила foreground service на Android 14 / 15 / 16
Начиная с Android 14 любой сервис, который использует камеру в фоне, должен указывать foregroundServiceType. В Android 15 и 16 эта проверка стала строгой — приложения с ошибками не проходят проверку в Play Store.
Для видеовьюера правильный тип — mediaPlayback. Укажите его в манифесте, свяжите с MediaSessionService и показывайте постоянное уведомление во время воспроизведения. Если приложение записывает видео, на Android 14 и выше также могут потребоваться разрешения camera и runtime-разрешения.
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
<service
android:name=".stream.CameraPlaybackService"
android:foregroundServiceType="mediaPlayback"
android:exported="false" />
Уперлись в задержку, кодеки или тупик с ONVIF?
Мы выпускали приложения для IP-камер, используемых при полицейских допросах, медицинском наблюдении и на промышленных объектах. Расскажите про сбой — мы подскажем, как его устранить.
Безопасность: аутентификация, TLS и ловушка незашифрованного RTSP
Digest-аутентификация RTSP не шифрует данные. Простые URL rtsp:// — те, что используют большинство NVR в интерфейсах управления, — передают логины, пароли и видео в открытом виде. В любой чужой сети это серьёзная уязвимость.
1. Заворачивайте RTSP в TLS или VPN. Используйте rtsps://, если камера это поддерживает; иначе настройте туннель WireGuard или Tailscale до моста и пропустите RTSP через него.
2. Храните учётные данные правильно. Используйте Android Keystore для API-ключей и паролей от камер. Никогда не включайте их в ресурсы APK; не записывайте в логи; меняйте при выходе пользователя из системы.
3. Network Security Configuration. Устанавливайте по умолчанию cleartextTrafficPermitted="false", а затем разрешайте доступ к конкретному хосту LAN для on-prem RTSP только при крайней необходимости.
4. Pinning сертификатов — аккуратно. Прибивайте сертификат моста, если инфраструктура ваша. Не прибивайте сертификаты потребительских камер — обновления прошивки заменяют их самоподписные сертификаты, и устройство перестанет работать.
5. Аудит-логи. GDPR и CCPA требуют фиксировать, кто, что и когда просматривал. Логируйте события открытия, закрытия и скачивания потока на сервере — не только на устройстве.
Соответствие требованиям: GDPR, CCPA 2026 и BIPA для распознавания лиц
GDPR. Записываемое видео считается персональными данными. Настройте автоматическое удаление через 30–90 дней, если у вас нет официально зафиксированного законного основания хранить данные дольше. Размещайте информационные таблички в местах, где камеры снимают публичные или полупубличные пространства; заключайте соглашения о обработке данных с каждым третьим лицом (например, облачным хранилищем или сервисом аналитики), которое имеет доступ к видеоматериалам.
CCPA (с 1 января 2026 года). В Калифорнии теперь требуется оценивать риски для приватности и проводить аудиты кибербезопасности для компаний, превышающих определённые пороги по выручке или объёму данных. Приложения для видеонаблюдения и аналитики часто попадают под эти требования. Заложите время на разработку для обоих процессов.
BIPA (Иллинойс) и аналоги. Если приложение использует распознавание лиц или биометрическую кластеризацию, закон BIPA штата Иллинойс предусматривает штраф — 75 тыс. ₽ за непреднамеренное нарушение и 375 тыс. ₽ за умышленное. Явное согласие пользователя (opt-in) и возможность аудита при удалении данных — обязательны. В Техасе и Вашингтоне действуют похожие законы.
HIPAA и HITECH. Если в приложении камера когда-либо показывает пациента, обрабатывайте эту информацию как защищённые медицинские данные (PHI) на всех этапах. Обеспечьте шифрование при передаче и хранении, ведите журналы доступа, заключайте соглашения с бизнес-партнёрами. Наше внедрение V. A. L. T. в медицинских клиниках построено именно по этому принципу.
Эталонная архитектура Android-приложения для IP-камер
Ниже — стек, который мы рекомендуем использовать по умолчанию в 2026 году. Каждый слой — либо лидер рынка, либо хорошо поддерживаемая альтернатива с открытым кодом, и каждая связь между компонентами проверена в продакшене на одном из проектов Форсофт.
| Слой | Выбор по умолчанию | Задача | Альтернатива |
|---|---|---|---|
| Камеры | Hikvision / Dahua / Axis (Profile S) | Источник RTSP + ONVIF | Reolink, Amcrest, Ubiquiti |
| Мост | go2rtc или MediaMTX на Hetzner AX | RTSP → WebRTC / LL-HLS | Janus Streaming plugin |
| Аутентификация / API | Keycloak или Auth0 + REST на Go/ Kotlin | Доступ к пользователям, камерам и записям | Firebase Auth для MVP |
| Android-клиент | Kotlin + Jetpack Compose + Media3 | Просмотр в реальном времени, PTZ, клипы | Compose Multiplatform для паритета с iOS |
| Канал реального времени | libwebrtc Android | Удалённый просмотр с задержкой менее секунды | ExoPlayer RTSP в локальной сети |
| Хранение | S3 / Wasabi (холодное хранение) + PostgreSQL (события) | Записи, метаданные, аудит-лог | MinIO on-prem под локализацию данных |
| Аналитика (опционально) | YOLOv8 / DeepStream на мосту | События движения, объектов, аномалий | AWS Rekognition Video или своё |
Что касается слоя AI, у нас есть отдельные материалы по автоматическому обнаружению аномалий для камер безопасности и разбору компромиссов между edge и cloud — где лучше размещать инференс.
Обязательные функции Android-приложения для IP-камер в 2026
1. Мультикамерная сетка с адаптивным качеством. На низкоразрешённых подпотоках — стены 4×1, 3×3 и 4×4; полное разрешение — по тапу. Именно так V. A. L. T. выводит 9 HD-потоков на экран, не перегружая устройство.
2. Управление PTZ — жесты и кнопки на равных. Перемещение по экрану (drag-pan), масштабирование (pinch-zoom) и кнопки на экране — всё работает одинаково хорошо, даже в перчатках. Отправляйте команды PTZ через ONVIF; применяйте задержку (debounce) — дешёвые камеры могут не справляться с быстрым вводом.
3. Двусторонний звук там, где камера это умеет. Камеры ONVIF Profile T поддерживают двусторонний звук; на стороне клиента используйте аудио по WebRTC.
4. Лента событий с движением и AI-детектами. Прокручиваемый таймлайн с цветовой кодировкой событий; тап перемещает к нужному клипу. Такой функционал полезен как для судебных экспертов, так и для операционных команд.
5. Экспорт клипов с метаданными цепочки хранения. Подписывайте каждый экспорт и ставьте временную метку; вычисляйте хеш файла; фиксируйте, кто и что экспортировал. Это обязательно для правоохранительных органов, HR-расследований и страховых случаев.
6. UI, устойчивый к офлайну. Кэшируйте превью и метаданные; делайте переподключение незаметным для пользователя; показывайте временные метки «последний раз видели» при отключении камеры.
Мини-кейс: V. A. L. T. на Android для залов суда и клиник
V. A. L. T. — платформа видеонаблюдения от «Фора Софт», установленная в комнатах допросов, залах суда и медицинских кабинетах. Android-клиент делает ровно то, что описано в этой статье: находит IP-камеры на объекте через ONVIF, подключается к их RTSP-потокам, отображает HD-экран 3×3, обеспечивает полный PTZ-управление и двустороннюю аудиосвязь для удалённых операторов.
Техническая форма: Media3 RTSP для просмотра в локальной сети, libwebrtc через мост MediaMTX для удалённого доступа, ONVIF для обнаружения и управления PTZ, HIPAA-совместимое хранилище для клинических площадок, аудит-логи на каждой границе. Типичная сессия: оператор одновременно смотрит три комнаты, поворачивает камеру в одной из них с помощью PTZ, делает закладку и экспортирует подписанный клип — всё это занимает меньше 60 секунд, при этом задержка в PTZ-управлении не превышает одной секунды.
Модель стоимости: MVP Android-приложения для IP-камер в 2026
Реалистичный MVP Android-приложения для IP-камер — вьюер, обнаружение через ONVIF, воспроизведение по RTSP и WebRTC, управление PTZ, лента событий, экспорт клипов и базовое облачное хранилище — укладывается в диапазон 2,2–5,2 млн ₽, если мы разрабатываем его по своему инженерному процессу с привлечением агентов. Обычно на создание MVP уходит 8–12 недель, ещё около 8 недель — на аналитику и доработку.
Инфраструктура в рантайме. Мост: сервер класса Hetzner AX-32 примерно за 4 500 ₽ в месяц держит 30–50 одновременных потоков 1080p. Облачное хранилище: Wasabi с совместимостью S3 — около 450 ₽ за ТБ в месяц без платы за исходящий трафик. TURN: Coturn на том же сервере или управляемый сервис примерно за 30 ₽ за ГБ ретранслированного трафика.
Следите за скрытыми издержками. Циклы ревью в магазинах приложений, декларации приватности для Google Play, тестирование по конкретным странам, работа с вендорами ONVIF — и те самые 2–4 недели на настройку и оптимизацию кодеков, которые всегда всплывают за неделю до запуска. Эти сроки закладывайте заранее — не выкидывайте.
Фреймворк решения: выбираем стек за пять вопросов
В1. Какой бюджет задержки действительно нужен продукту? Меньше 500 мс (допросы, управление камерой в реальном времени через WAN): WebRTC через go2rtc или MediaMTX. 1–2 с (обычный просмотр в локальной сети): Media3 RTSP. 2–6 с — допустимо: LL-HTTP Live Streaming (LL-HTTP Live Streaming).
В2. Клиенты в одной сети с камерой? Да: скорее всего, подойдёт RTSP, без моста. Нет (удалённые, несколько площадок): нужен мост, скорее всего WebRTC. Не пытайтесь пробросить RTSP в публичный интернет.
В3. Какие камеры принесут пользователи? Hikvision / Dahua / Axis / Amcrest: Profile S закроет потребность. Reolink и потребительские бренды: ONVIF работает нестабильно — предусмотрите откат на вендорские SDK для двух самых популярных моделей у ваших клиентов.
В4. Есть ли биометрия или распознавание лиц? Да: согласия по BIPA, сценарии с предварительным согласием (opt-in) и возможность аудита при удалении данных — это базовые требования, которые нужно закладывать с самого начала, а не добавлять потом. Нет: даже если биометрии нет, законы вроде CCPA и GDPR всё равно действуют при хранении персональных данных, но уровень рисков будет ниже.
В5. Нужен ли PTZ с задержкой меньше секунды в первый год? Да: закладывайте WebRTC + libwebrtc, мост и TURN в бюджет. Нет: запускайте сначала на RTSP, добавьте WebRTC на втором этапе, когда подтвердите соответствие продукта рынку.
Хотите честный разбор вашего текущего Android-приложения для IP-камер?
30 минут с инженером, который работал с таким стеком в регулируемых средах — аудит задержек, проверка кодеков, анализ пробелов по комплаенсу. Бесплатно и без обязательств.
Пять ловушек, которые мы видим в Android-проектах с IP-камерами
1. Считать, что RTSP вытащит задержку меньше секунды. На потребительском интернете надёжно — не вытащит. Если продукту нужен порог меньше 1 с, закладывайте WebRTC с самого начала. Добавлять мост после подписания договора — самая дорогая ошибка, которую мы видим.
2. Забывать про multicast-блокировку WifiManager в ONVIF. Обнаружение работает на ноутбуке, но не работает на телефоне. Такая проблема встречается в каждом аудируемом нами Android-проекте с ONVIF.
3. Выпускать только H.265-потоки. Около 35% Android-устройств всё ещё не могут аппаратно декодировать HEVC. Договоритесь с камерой о подпотоке H.264 или предусмотрите транскодирование на мосту.
4. Передавать учётные данные через незашифрованный RTSP. Digest auth — это не шифрование. Оборачивайте соединение в TLS или используйте туннелирование через WireGuard; никогда не передавайте rtsp://user:pass@host по ненадёжной сети в открытом виде.
5. Игнорировать типы foreground service на Android 14+. В эмуляторе всё работает, но сборка в Play Store отклоняется. Объявите mediaPlayback и соответствующее разрешение с самого начала.
KPI, которые показывают, что интеграция работает хорошо
KPI качества. Задержка glass-to-glass p95 (<2 с для RTSP, <500 мс для WebRTC), частота замороженных кадров за 10-минутную сессию (цель <1%), частота отката кодека (доля сессий, перешедших с H.265 на H.264/LL-LLS; цель <10%).
Бизнес-метрики. Ежедневное количество активных сессий камер, среднее время стриминга на пользователя, доля сессий без сбоев (цель — 99,5% и выше), количество обращений в поддержку на 1000 минут стриминга.
KPI надёжности. Успешность переподключения после обрыва сети — более 95%, успешность обнаружения по ONVIF на объекте — более 90% для поддерживаемых производителей, расход заряда батареи при живом просмотре — менее 7% в час на эталонном устройстве.
Когда НЕ нужно делать своё Android-приложение для IP-камер
У вас меньше трёх отличий продукта от конкурентов. Если в списке функций только «смотреть камеры, записывать, получать уведомления» — и больше ничего, white-label на базе tinyCam Pro или IP Cam Viewer запустится быстрее и будет дешевле на годы вперёд. Собственная разработка оправдана, когда нужны встроенный ИИ, поддержка нескольких арендаторов, уникальный интерфейс под конкретную отрасль или особые сценарии хранения данных.
Вы не проверили регуляторный путь. HIPAA, BIPA, CJIS и часть правил публичного сектора ЕС превращают «MVP за 10 недель» в 9-месячное болото сертификации. Проверьте соответствие требованиям до начала разработки.
Парк камер узкий и вендорский. Если вы работаете только с камерами одного производителя и он предоставляет white-label SDK — используйте его. Собственная разработка окупается, когда нужно поддерживать пять и более вендоров или когда SDK производителя не поддерживает WebRTC.
О чём спросить партнёра по разработке до подписания договора
Покажите реальное измерение задержки RTSP на устройстве. Glass-to-glass: камера телефона на миллисекундный таймер на экране ноутбука. Цифры задержки в презентации нарисует кто угодно; видео-доказательство — почти никто.
Покажите матрицу покрытия ONVIF. Какие вендоры, какие версии прошивок, какие особенности. Это племенное знание — у честного партнёра будет таблица с пометками «работает / не работает / странно».
Покажите свой workflow инженерии с агентами. Выпустить видеоплатформу из более чем миллиона строк кода за квартал — это не подвиг одного человека, а результат отлаженного процесса. Спросите у партнёра, как устроен его рабочий процесс.
FAQ
Действительно ли Media3 ExoPlayer воспроизводит RTSP с любой IP-камеры?
Да, для потоков H.264 + AAC — а это большинство камер. Из коробки Media3 не везде проигрывает H.265 по RTSP, и часть вендоров присылает нестандартные расширения SDP, которые модуль игнорирует. На крайние случаи предусмотрите транскод на мосту go2rtc или MediaMTX в профиль, совместимый с Media3.
WebRTC всегда лучше RTSP для IP-камер?
Только когда нужна задержка меньше 1 с — например, в комнатах допросов, при использовании живого PTZ через интернет или двустороннего звука. Для просмотра в локальной сети с задержкой 1–2 с RTSP через Media3 дешевле в эксплуатации (не нужен мост и TURN) и проще в разработке. Выбирайте протокол по требованиям к задержке, а не по демо.
Как автоматически находить IP-камеры в локальной сети?
Используйте WS-Discovery из ONVIF: multicast SOAP поверх UDP на 239.255.255.250:3702. На Android сначала возьмите WifiManager.MulticastLock — без него ОС выкидывает multicast-пакеты и обнаружение возвращает пустоту. Библиотеки вроде RootSoft/ONVIF-Java берут на себя SOAP-конверт и разбор ответов.
Как управлять PTZ из Android-приложения?
Шлите ONVIF PTZ SOAP-команды (ContinuousMove, RelativeMove, AbsoluteMove) на URL PTZ-сервиса камеры с Android-клиента. Применяйте дебаунс агрессивного пользовательского ввода — потребительские камеры не справляются с жестовыми потоками на 60 Гц, и перегрузка ONVIF-эндпоинта приводит к потерянным командам и «залипшим» поворотам.
Безопасно ли пускать RTSP в публичный интернет?
Нет. Простая RTSP-аутентификация с digest передаёт учётные данные и видео так, что их легко перехватить. Если камера поддерживает RTSPS с TLS — обязательно используйте его. Альтернатива: туннелируйте трафик через VPN, например WireGuard или Tailscale, либо передавайте видео через WebRTC с DTLS и SRTP. Никогда не публикуйте открытые URL вроде rtsp://user:pass@host.
Сколько времени занимает разработка Android-приложения для IP-камер?
Хорошо проработанный MVP (мультикамерный просмотр, PTZ, лента событий, экспорт клипов, облачная запись) реализуется за 8–12 недель командой из двух инженеров в нашем инженерном workflow с использованием агентов. Добавьте 4–8 недель на внедрение AI-аналитики, адаптацию под требования HIPAA/BIPA и тестирование совместимости с несколькими вендорами ONVIF. Типичная итоговая стоимость — 2,2–5,2 млн ₽ за MVP.
Сколько камер реально можно показать одновременно на телефоне?
С подпотоками низкого разрешения и аппаратным декодированием H.264 — комфортно работать с 9–16 плитками на современном среднем устройстве. Полное HD на десяти потоках быстро приведёт устройство к тепловому троттлингу. V. A. L. T. ограничивает 9 одновременными HD-потоками на экран — это оптимальный баланс, который мы наблюдаем в клинических и судебных системах.
Может ли AI-детектирование движения работать прямо на телефоне?
Для одного потока — да. TensorFlow Lite и ML Kit запускают детекторы класса YOLO-Nano со скоростью 5–10 кадров в секунду на современных чипсетах. Для работы с большим количеством камер выполняйте инференс на мостовом устройстве или в облаке.
Что почитать дальше
Архитектура
Полный гид по разработке VMS на заказ
Как построить современную систему видеонаблюдения с нуля.
AI-плейбук
Модели обнаружения аномалий для видеонаблюдения
Как выбирать модели детектирования, которые реально доходят до продакшена.
Плейбук
ML в реальном времени для аномалий безопасности
Плейбук на 2026 год по ML-аналитике для камер видеонаблюдения.
Практические советы
Автоматическое обнаружение аномалий для камер
Три практических приёма, которые мы используем при реальных развёртываниях систем видеонаблюдения.
Гид покупателя
Архитектура WebRTC: своё решение или SDK
Когда строить свой стек, а когда использовать готовое — с реальными цифрами.
Готовы выпустить Android-приложение для IP-камер, которое действительно масштабируется?
Короткая версия: используйте Media3 RTSP для работы в локальной сети, libwebrtc с мостом go2rtc или MediaMTX — для удалённого доступа, ONVIF — только для обнаружения камер и управления PTZ. Выбирайте H.264 как надёжный базовый кодек. На Android 14+ объявите foreground service. Учитывайте требования комплаенса с самого начала: хранение данных по GDPR, аудит CCPA к 2026 году, соблюдение BIPA при работе с биометрией — ведь добавить это позже обойдётся в масштабные возвраты средств.
Фора Софт выпускает именно такой стек уже два десятилетия — через V. A. L. T. в судах и клиниках, через пересборку видеоплатформы более чем на 1 млн строк кода и десятки кастомных интеграций для регулируемых отраслей. Если вы оцениваете, аудируете или спасаете Android-проект с IP-камерами, мы сэкономим вам квартал боли и квартал runway.
Следующий шаг займёт 30 минут. Принесите список камер, цель по задержке и ограничения по комплаенсу — уйдёте с конкретным выбором протокола, планом для команды и реалистичным графиком.
Разберём ваш проект Android и IP-камер за 30 минут
Конкретный выбор протокола и библиотеки, реалистичный график поставки и список пробелов по комплаенсу и покрытию кодеков. Без питч-дека.
