Code Monkey home page Code Monkey logo

cams's Introduction

Cams

Cams

Простое мобильное приложение под Android для воспроизведения RTSP потоков с IP камер.

Особенности:

  • Просмотр RTSP потоков c любых IP камер, включая H.265+.
  • Одновременный просмотр нескольких потоков.
  • Двадцатикратное увеличение изображения.
  • Поддержка двухканальных камер.
  • Просмотр видеозаписей или изображений по протоколу SFTP.
  • Возможность настройки оповещений о срабатывании детектора движения камеры.
  • Высокая скорость подключения.
  • Предельная простота навигации и управления.
  • Максимальная безопасность и конфиденциальность данных.
  • Переключение протокола TCP/UDP. Эта опция важна при просмотре камер через интернет, где UDP может не поддерживаться или работать плохо.

Main screen  Edit screen  Files screen  Video screen

Приложение написано для совместного использования с сервером python-rtsp-server, но прекрасно работает автономно благодаря возможности подключения к любым IP камерам, а также видеорегистраторам, поддерживающим SFTP.

Воспроизводит большинство типов видеопотоков (не только RTSP). На снимке экрана выше показано изображение с реальной видеокамеры и три тестовых ролика в режиме "Группа".

ВАЖНО. Приложение ориентировано на безопасность и приватность данных, поэтому не собирает и не обрабатывает никакую информацию о пользователе. Данные не отправляются ни на какие сервера, включая техническую инфраструктуру Google и "облачные" хранилища производителей камер.

Установка

APK файл можно собрать самостоятельно, скачать с Github, установить с помощью F-Droid или RuStore. Поддерживается архитектура ARM-64 (используется в большинстве современных мобильных телефонов), ARM, x86-64 и x86.

Настройка

Для подключения к видеокамере нужно ввести в поле "Адрес" ее URL, указанный производителем. Обычно он выглядит так:

[rtsp://][<пользователь>:<пароль>@]<IP>[:<порт>][/<путь>]

Параметры в квадратных скобках необязательны (зависит от настроек камеры).

Для двухканальных камер дополнительно можно указать адрес второго канала. Нпример, для камер Hikvision и их производных путь будет иметь такой вид:

ISAPI/Streaming/Channels/<номер канала>

Тогда первый канал (высокого разрешения) будет иметь номер 101, а второй (низкого разрешения) — 102.

Каналы низкого разрешения можно использовать для ускорения загрузки изображения, для экономии трафика и для снижения нагрузки на процессор устройства. Это особенно удобно для просмотра группы камер при низкой скорости соединения. При воспроизведении каналы можно переключать кнопкой К1/К2 в нижнем правом углу экрана. На экранах групп камер по умолчанию используется K2.

Также для снижения нагрузки воспроизведение камер, выходящих за границы экрана при увеличении изображения, приостанавливается.

Адрес SFTP сервера или видеорегистратора выглядит так:

[sftp://]<пользователь>:<пароль>@<IP>[:<порт>][/<путь>]

ВНИМАНИЕ! Настоятельно не рекомендуется использовать данные доступа администратора. Для SFTP сервера лучше создать chroot, например, как описано тут.

Совет: в названии камеры можно использовать эмодзи в качестве иконки. Например, на снимках экрана выше использованы иконки из стандартного набора мобильного телефона.

Оповещение о движении

Опционально приложение может уведомлять о срабатывании детектора движения камер. Оповещение срабатывает в момент появления нового изображения с камеры в указанной папке SFTP сервера. Для работы этой функции требуется настроить камеры и сервер хранения полученных изображений. Подробно эти настройки описаны в параллельном проекте Cams-PWA.

Подробное обсуждение приложения: habr.com/ru/post/654915 и сервера: habr.com/ru/post/597363.

Get it on Github Get it on F-Droid

  Доступно в RuStore

Copyright (c) 2022-2024 vladpen under MIT license. Use it with absolutely no warranty.

cams's People

Contributors

phyrz91 avatar vladpen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

cams's Issues

Нет автообновления на f-droid

Вы выложили программу на сайт f-droid, но при этом не установили автообновление. В настройках в файле https://gitlab.com/fdroid/fdroiddata/-/blob/master/metadata/com.vladpen.cams.yml прописано:
AutoUpdateMode: None
UpdateCheckMode: None

прошу сделать автообновление, чтобы f-droid все делал сам без вашего участия.
И вам проще и пользователям лучше.

Удаление камеры в группе с визуализацией

Прошу сделать более удобный и понятный способ удаления камеры из группы. Я понимаю что ее можно удалить просто потащив в бок, но это не понятно и не очевидно.

  • нужна визуализация удаления камеры (когда тащим камеру в бок появляется красный фон под надписью или фон с мусорным ведром например)
  • для того чтобы было понятно как удалять камеру из списка внизу под кнопкой сохранить можно добавить серым едва заметным текстом подсказку.

Добавить вывод логов

Прошу сделать возможность видеть логи об ошибках если таковые имеются. Подключаюсь к камерам но что-то не так и не работает камера. А вот понять что именно не так без показа логов нельзя. Добавьте вывод логов для удобства.

Добавить кнопку выключения звука для камер с микрофоном

Прошу добавить возможность выключить звук полностью для камер со встроенным микрофоном. Например кнопка в углу экрана. Щас звук можно выключить если убрать громкость полностью, но при этом страдаеют другие звуки т.к. громкость меняется во всем телефоне.

mute

Проблемы со звуком при запуске

Запускаю приложение, открываю камеру.
Вижу знак 🔇 что звук выключен, звука быть в теории не должно, но в реальности я слышу звук с камеры.
Я тыкаю на кнопочку чтобы включить звук, значек меняется на 🔈 звук есть, все норм
Я тыкаю на кнопочку еще раз чтобы выключить звук, значек меняется на 🔇 звук пропадает, вот щас все норм.

При запуске приложения показан знак 🔇 что звука нет, но это не так, нужно выключать звук

Экспорт данных с шифрованием

Прошу сделать экспорт полных данных включая логин и пароль, но при этом экспорте файл шифруется и требует ввести пароль для шифрования экспортированны данных.

Просмотр более 4 камер за 1 раз

У меня на планшете можно без проблем смотреть 6 и даже 9 камер. Я проверяла это на "zero chanel" с ресивера когда можно разом показать 9 камер разом. Для общего понимания размера хватает, ну т.е. понять ходит там кто-то или нет. К тому же на камерах можно включить двойное VCA чтобы подсвечивать движущиеся объекты. Проблем с просмотром большого числа камер на относильтельном маленьком экране планшета нет, думаю и не будет проблем и на телефоне. Многие программы без проблем могут показывать 2x3, 3x3 или 2x4 камеры. Я понимаю что это мелкое изображение будет но это лучше чем будет отсутствовать часть камер вообще.

Прошу добавить возможность смотреть более 4 камер за 1 раз (группы с 12 камерами максимум, т.е. 3x4 аксимум думаю должно хватить для всех групп пользователей)

Два RTSP адреса для двух разных потоков от одной камеры

В камерах есть возможность транслировать два разных потока:

  • первичный поток в максимальном качестве
  • вторичный потом в более низком качестве

Прошу сделать возможность указывать для одной камеры два разных RTSP адреса для разных потоков. Потом при просмотре камеры эти потоки хотелось бы переключать.
В углу будет кнопочка ключить высокое качество или просто кнопка выбор типа потока 1й или 2й.

Обработка обрывов связи

Сейчас нет сообщений если пропадает сигнал и связь барахлит, картинка просто останавливается и всё. Прошу добавить сообщение на экран что связь оборвалась.
Также при восстановлении связи прошу сделать возможность автоматического переподключения. Щас для этого нужно выйти из камеры и заново в нее войти, т.е. обрыв связи никак не обрабатывается и не восстанавливается автоматом.

Настройка по умолчанию для просмотра 1го или 2го потока

При просмотре в группе камер идет 2й поток, он очень маленький и его хватает для нормального непрерывного воспроизведения. У меня это примерно 256 (Кбит/с) с 5 камер = 1,25 (Мбит/с).
При переключении на одиночную камеру всегда идет 1й поток и нет варианта его переключить, нет варианта в настройках какой поток показывать (1й или 2й) при просмотре одиночной камеры.
Получается, что при нахождении в дальней комнате где плохо ловит Wi-Fi и низкая скорость, я не могу нормально смотреть одиночную камеры потому что не хватает полосы пропускания. Wi-Fi по скорости 5 Мбит/с, а первый поток с камеры больше и составляет 9 Мбит/с.
Аналогичная ситуация, когда я подключаюсь к камерам удаленно через VPN (его скорость от 5 Мбит/с до 10 Мбит/с) и иногда не получается также нормально смотреть 1й поток, но нормально идет 2й поток.

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

Поэтому прошу в настройках добавить пункт для камеры:
По умолчанию при просмотре камеры показывать: (и тут вариант выбора для пользователя 1й или 2й поток)

Так же при просмотре одиночной камеры прошу добавить кнопку для ручного переключения потока камеры.

Перемещение камер в группе в момент просмотра видео

Прошу предусмотреть возможность перемещать камеры просто нажав пальцем в группе в момент простотра видео перетащив в другое место камеру. Пустые камеры которые ничего не показывают, пустые места, жалательно тоже таскать. Это будет актуально в этом режиме: #41

Совместный показ камер и групп в одном списке

Для удобства лучше чтобы камеры и группы камер были на одном экране и не приходилось постоянно переключаться. Статится время и страдает удобство работы.
Можно камеры и группы выделять текстом разного цвета (в настройках цвет пользователь сам выбирает) или впереди ставить определенные значки для камер и групп (можно самому их задавать из символов Unicode символов например или программа сама их подствавит).

Не показывает поток с камеры

Только ваша программа не воспроисзодит поток с камеры. VLC может без проблем показывать.

Это второй поток с камеры в малом разрешении, кодек h.265, 20 fps, ping до камеры 3 мс. Канал связи 30 Мбит/с, поток 0,2 Мбит/с.

Вот логи (только скрин могу показать т.к. нет сохранения, сохранение я уже предложила тут #37):

Screenshot

Первый канал камеры явно пережат

При просмотре первого канала качество видео явно не соответствует оригиналу. Вы зачем видео пережимаете?
Прошу показывать оригинал без пережатия.

P.S. Я не путаю первый и второй канал. второй канал еще хуже, так что ошибки быть не может.

cams
real

Просмотр несколько камер одновременно

Прошу сделать возможность смотреть одновременно несколько разных камер в одном окне.
Создается сетка нужного размера (2x2, 2x3, 1x3, 3x3 и т.д.) и в нее добавляются нужные камеры и можно их смотреть на одном экране одновременно.

3

Добавление на f-droid.org

Почитала статью на хабре. Хорошее приложение, спасибо за него.
Для улучшения идей и улучшения функционала вы можеет добавить приложение в каталог на сайте f-droid.org?
Это привлечет пользователей и разработчиков которые смогу помочь в развитии приложения.

Кривая иконка приложения в Android 6

При установки приложения на Android 6 за место иконки приложения в виде черной камеры идет стандартная иконка андроида в виде зеленого робота. Что-то там не так настроено у вас, где-то глюк.

Нет мастабирования в Android 6

Открываю камеру в Android 6, старенький планшет. Пытаюсь изменить масшатаб камеры приблизить, но ничего не приближается и видео просто переезжает в левый вехний угол, т.е. просто катается по диагонали туда-сюда без мастабирования.

Проблемы при подключении с первым каналом если пропускная способность сети низкая

Я далеко и пропускная способность сети низкая, открываю камеру где прошлый раз был выбран первый канал, на экране только круг со стрелкой что пытается подключиться и нет кнопки переключения канала, я не могу перевести камеру на другой канал чтобы что-то посмотреть при низкой скорости сети.

Как будем решать проблему? Что делать людям если они попали в такую западню?

Не удается получить доступ по SFTP

Поднят сервер SFTP на роутере (Keenetic Giga). Указываю в настройках программы путь вида sftp://login:[email protected]:22/*****/ и никак не удается получить доступ к архиву. Уже мучаюсь два часа. Что может быть не так?

UPD: вопрос решился, все нормально. Можно удалить.

Добавить настройки поворота картинки

Прошу сделать вариант выбора поворота картинки:

  • по системным настройкам (как в системе так и в программе, все жестко одинаково)
  • только пейзажная ориентация
  • только портретная ориентация
  • по датчику не зависимо от других настроек системы

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

Удалила программу, ставлю ее занова и она при первом запуске требует ввести имя камеры и ее адрес камеры.
А должна показывать основное окно программы где можно добавить камеры или импортировать настройки.

Полное шифрование экспортированных данных

Прошу сделать возможность полностью шифровать бэкап, а не только пароль.
Если я загружу данные в облако или бэкап кто-то крадет он увидит, логины, IP адреса и порт, которые я так старательно меняла.
Имена камер и внутреняя структура сети долна быть защищена.
Релизация алгоритма AES и base64 помогут в этом деле.

Логи перенести в основное меню и сделать их сохранение

Логи вы спрятали так что их не удобно искать и смотреть и сохранить нельзя их
Может для удобства их перенести в оcновное меню?
Еще я вижу логи но скопировать их оттуда и передать вам для анализа я не могу, могу только скрины делать что неудобно.

Нужно сделать более дружелюбный интерфейс.

Ручная сортировка камер

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

Более интуитивно понятный способ указания каналов камеры

Сейчас я полову ломала как указать правильно два канала для камеры. У вас нужно указать только часть URL адреса и потом указать два числа как продолжение этого URL. Для многих это не явно и несовсем понятно. Еще нужно удалить часть старого URL чтобы все работало (удалить на конце допусим число /102 и потом отдельно указать 101 и 102 в новых полях).

Может как-то по другому сделать настройки или сделать приписку и пояснение, а то реально не понятно.

При наличии в адресе в конце /102 если ничего не удалять в основном поле и указании в отдельных новых полях 101 и 102, ничего не работает, каналы не пепереключаются. Прошу это учесть при обновлении настроек пользователем, допустим вы сами будите удалять часть URL.

Импорт и экспорт настроек

Настройки хранятся глубоко в недрах программы и их без root прав нельзя сохранить и перенести.
А руками занова всё вбивать долго. Лучше именть возможноть экспортировать настроки и импортировать.

Работает не вся строка для клика

Если кликать на название камеры то камера открывается и работает, если кликать на пустую строку рядом с названием то ничего не работает и камера не открывается. Иными словами поле для клика это только название камеры. Это нормально если экран маленький и строка длинная, а если это короткие названия на планшете тогда трока попросту пустует без дела и не работает.
Прошу сделать возможность кликать на любое место в строке чтобы открыть камеру для просмотра.
screens

Добавить поле логин и пароль

Сейчас логин и пароль можно ввести только через строку rtsp в виде login:pass@
Это неудобно хоть и нормально работает. Еще не все знают что так можно добавить логин и пароль.
Прошу сдалать отдельные поля для ввода логина и пароля.
Пароль еще будет защищен и его нельзя будет просто так посмотреть, щас заходи в настройки и смотри на все пароли :(

Если можно добавьте шифрование пароля в json файле, а то он щас вообще в открытом виде лежит как строка rtsp.
Хоть как-то можно будет защитится от простых горе хакеров.

Перестал работать 2й поток на всех камерах

В самой первой версии работал 2й потом в худшем качестве (просто обзорный поток).
1й поток на всех камерах работает как обычно, 2й перестал совсем. проверенно на 3х разных камерах.
При запуске 2го потока еще на экрне замечены артефакты в виде квадратов появляющихся на несколько миллисекунд.

В логах ошибки libvlc, сам лог приложила:
log_cam.txt

Убрать поле с названием камеры и стрелкой в пейзажной ориентации

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

screens

Добавить поле о программе

прошу добавить поле "О программе"
В него внести:

  • Версию (когда кто-о будет писать о проблеме он хоть сможет сказать что у него за версия стоит)
  • Сылку на github
  • Тип лицензии
  • Контакты для связи если есть проблемы в программе, типа обратная связь

Уязвимость при проблеме подключения

Если приложение не может подключиться к камере в логах показывается сообщение что нельзя подключиться к адресу
rtsp://login:[email protected]:554:/Streaming/Clannels/102

В логах светится логин и пароль, а этого быть не должно!

Копирование камеры

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

Открываешь камеру и жмешь в меню кнопку скопировать камеру, даешь новое название и меняешь одну цифру в номере камеры, очень просто и быстро.

Сохрание картинки и видео

Прошу добавить возможность сохранять отдельно по одному кадру из потока (захват картинки)
и возможность записи потока, нажал кнопку и видео поток записывается на карточку в телефоне.

пароль при экспорте водить дважды

Прошу сделать возможность водить пароль при экспорте данных дважды, чтобы точно убедится что он имено такой какой я хочу. Сейчас только 1 раз вводится и есть вероятность что при ошибке ввода в 1 букву будут проблемы.

Не верное поведение кнопки назад

Для повторение ошибки:

  • открываю программу
  • Жму настрока на одной из камер
  • меняю название камеры
  • сохраняю (переходит в основное окно)
  • кликаю на камеру для просмотра
  • кликаю назад для перехода назад в основное меню (все норм перехожу)
  • кликаю еще раз назад чтобы выйти (в место этого попадаю в настройки камеры где меняла название)
  • кликаю еще раз назад переходит в основное меню и я там с удивлением вижу название камеры до ее переименования
  • кликаю назад 3 раз и наконец то выхожу из программы (если менять название и заходить в настройки не одной, а нескольких камер тогда нажимая назад я буду ходить по всем этим камерам в обратной последовательности и только потом выйду из программы)

Тут все кнопки назад это те что у андроида внизу где треугольник, круг и квадрат.

Сокрытие строки с названием камеры при клике

Сейчас в программе через несклько секунд исчезает строка с названием камеры, стало удобнее, спасибо.
Можно добавить функцию чтобы строка исчезала еще при клике на экран? Сейчас при клике на экран строка только появляется, но не исчезает если кликнуть повторно.

Поле переключения TCP/UDP

Можно поменять переключатель TCP/UDP с вариант вкл/выкл на вариант выбора в виде переключателя?
Так будет понятнее.

type

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.