Android application for video stream modification "HookCamera"
Goal: Replace the video stream from a real camera with an RTMP stream, so that other applications perceive the stream as a regular image from the camera.
Platform: Android (version 13, with root access)
Additional requirements: Device with root access, installed Magisk, connection to PC via USB, working with ADB.
Technical assignment for the development of the Android application "PrivatCam"**ShadowHook
### 1. General Information
**Project Name: PrivatCam
Goal: Replace the video stream from the real camera with an RTMP stream, so that other applications perceive the stream as a regular image from the camera.
Platform: Android (version 13, with root access)
Additional Requirements: Device with root access, installed Magisk, connection to PC via USB, working with ADB.
### 2. Functional Requirements
#### 2.1 Main Functionality
- Interface for entering the RTMP stream address, for example: rtmp://localhost/live/test
- "Replace Camera" button to start the broadcast
- Ability to stop the camera replacement
- Emulation of the Android camera, so that other applications perceive the video stream as a real camera
- Support for reverse port forwarding via ADB (adb reverse tcp:1935 tcp:1935)
#### 2.2 Interaction with the Server
- Use of the RTMP protocol to receive the video stream
- Start the stream in OBS Studio with the address rtmp://localhost/live and key test
- Work with the local server MonaServer installed on the PC
#### 2.3 Video Requirements
- Support for various resolutions (720p, 1080p)
- Support for standard codecs (H.264)
- Minimal video stream latency
### 3. Technical Requirements
#### 3.1 Required Technologies
- FFmpeg – for decoding and processing the RTMP video stream
- Android Camera HAL (Hardware Abstraction Layer) – for replacing the video input
camera interception possible via ShadowHook
- Magisk Module – for integration with system services
- **Root access – for manipulating system drivers
- ADB Reverse – for forwarding a local connection between PC and smartphone
#### 3.2 Possible Implementation Approaches
1. Creating a virtual camera device
- Developing a custom driver to emulate the camera
- Interacting with Camera HAL via API
2. Processing the video stream
- Receiving the RTMP stream via FFmpeg
- Decoding the video stream and feeding it to the virtual device
- Supporting dynamic changes to stream parameters
3. Emulating the standard camera interface
- Using Camera2 API or custom HAL libraries
- Intercepting and broadcasting the video stream to third-party applications
### 4. User Interface
#### 4.1 Main Screen
- Field for entering the RTMP link
- "Connect to Stream" button
- "Stop Replacement" button
- Connection status indicator
- Error and message log
### 5. Testing
- Checking compatibility with different applications (WhatsApp, Zoom, Skype, Instagram, Google Meet)
- Checking connection stability
- Measuring video stream latency
- Testing on multiple devices with root access
### 6. Deployment
- Manual installation of APK (without publishing on Google Play, as it requires root)
- Possibility of installation via Magisk Module (if needed)
### 7. Expected Results
- A working application that allows replacing the camera video stream in any Android application
Техническое задание на разработку Android-приложения "PrivatCam"**ShadowHook
### 1. Общая информация
**Название проекта: PrivatCam
Цель: Подмена видеопотока реальной камеры на RTMP-стрим, чтобы другие приложения воспринимали поток как обычное изображение с камеры.
Платформа: Android (версия 13, с root-доступом)
Дополнительные требования: Устройство с root-доступом, установленный Magisk, подключение к ПК через USB, работа с ADB.
### 2. Функциональные требования
#### 2.1 Основной функционал
- Интерфейс для ввода RTMP-адреса потока, например: rtmp://localhost/live/test
- Кнопка "Подменить камеру" для старта трансляции
- Возможность остановки подмены камеры
- Эмуляция камеры Android, чтобы другие приложения воспринимали видеопоток как реальную камеру
- Поддержка обратного проброса порта через ADB (adb reverse tcp:1935 tcp:1935)
#### 2.2 Взаимодействие с сервером
- Использование RTMP-протокола для получения видеопотока
- Запуск стрима в OBS Studio с адресом rtmp://localhost/live и ключом test
- Работа с локальным сервером MonaServer, установленным на ПК
#### 2.3 Требования к видео
- Поддержка различных разрешений (720p, 1080p)
- Поддержка стандартных кодеков (H.264)
- Минимальная задержка видеопотока
### 3. Технические требования
#### 3.1 Требуемые технологии
- FFmpeg – для декодирования и обработки видеопотока RTMP
- Android Camera HAL (Hardware Abstraction Layer) – для подмены видеовхода
возможен Перехват камеры через ShadowHook
- Magisk Module – для интеграции с системными сервисами
- **Root-доступ – для манипуляции с системными драйверами
- ADB Reverse – для прокидывания локального соединения между ПК и смартфоном
#### 3.2 Возможные подходы к реализации
1. Создание виртуального устройства камеры
- Разработка кастомного драйвера для эмуляции камеры
- Взаимодействие с Camera HAL через API
2. Обработка видеопотока
- Получение RTMP-потока через FFmpeg
- Декодирование видеопотока и подача в виртуальное устройство
- Поддержка динамического изменения параметров потока
3. Эмуляция стандартного интерфейса камеры
- Использование Camera2 API или кастомных HAL-библиотек
- Перехват и трансляция видеопотока в сторонние приложения
### 4. Интерфейс пользователя
#### 4.1 Основной экран
- Поле для ввода RTMP-ссылки
- Кнопка "Подключиться к потоку"
- Кнопка "Остановить подмену"
- Индикатор статуса соединения
- Лог ошибок и сообщений
### 5. Тестирование
- Проверка работы с разными приложениями (WhatsApp, Zoom, Skype, Instagram, Google Meet)
- Проверка стабильности соединения
- Измерение задержки видеопотока
- Тестирование на нескольких устройствах с root-доступом
### 6. Развертывание
- Установка APK вручную (без публикации в Google Play, так как требует root)
- Возможность установки через Magisk Module (если потребуется)
### 7. Ожидаемые результаты
- Рабочее приложение, позволяющее подменять видеопоток камеры в любом Android-приложении
Applications 1
Current freelance projects in the category C & C++
Development of a Minecraft Java Seed Map / Seed Viewer for the websiteDevelopment of Minecraft Java Seed Map / Seed Viewer for the websiteProject Description A browser-based tool Minecraft Java Seed Map / Seed Viewer needs to be developed, which will work on our website and allow the user to enter a seed from Minecraft Java Edition and view an… C & C++, HTML & CSS ∙ 12 days 20 hours back ∙ 17 proposals |