Initial commit
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
# CamSwapper: A Virtual Camera Module (Android 10+)
|
||||
|
||||
**PLEASE DO NOT USE THIS SOFTWARE FOR ILLEGAL PURPOSES.**
|
||||
|
||||
CamSwapper is a virtual camera module that replaces your device's camera feed with video files or images at the application level (via Xposed/LSPosed) or system-wide (via HAL hook).
|
||||
|
||||
## Quick Start
|
||||
|
||||
1. Install the CamSwapper APK on a rooted device with LSPosed
|
||||
2. Enable module in LSPosed Manager and select target apps
|
||||
3. Select a video file from the app UI
|
||||
4. Open any hooked camera app — your video plays as the camera feed
|
||||
|
||||
## Features
|
||||
|
||||
### App-Level Hook (LSPosed)
|
||||
| Feature | Status |
|
||||
|---------|-------|
|
||||
| Local video file hooking | [x] |
|
||||
| AMediaCodec hardware decoding (4K@60fps HEVC) | [x] |
|
||||
| Static image hooking | [x] |
|
||||
| Network stream (RTSP) | [ ] In progress |
|
||||
| Preview cropping to match aspect ratio | [x] |
|
||||
| Camera1 API photo capture | [x] |
|
||||
| Camera1/Camera2 API hooks | [x] |
|
||||
| Audio playback | [x] |
|
||||
| Floating debug panel | [x] |
|
||||
|
||||
### System-Wide HAL Hook (Magisk/KernelSU)
|
||||
| Feature | Status |
|
||||
|---------|-------|
|
||||
| LD_PRELOAD injection | [x] |
|
||||
| All apps simultaneous | [x] |
|
||||
| No per-app scoping | [x] |
|
||||
| RTSP network streams | [x] |
|
||||
|
||||
## Requirements
|
||||
|
||||
- Android 10+ (API 29+)
|
||||
- Root access
|
||||
- LSPosed Framework 2.0.0+ (for app-level hook)
|
||||
- Magisk or KernelSU (for system-wide HAL hook)
|
||||
|
||||
## Usage
|
||||
|
||||
### Setup
|
||||
1. Place video files in `DCIM`, `Movies`, or other public storage
|
||||
2. Grant the module media read permissions
|
||||
3. Grant target apps media read permissions
|
||||
4. In LSPosed, enable CamSwapper and select target scope (TikTok, Telegram, etc.)
|
||||
5. **Force stop** target app after any changes
|
||||
6. Tap the thumbnail area to select a video file
|
||||
|
||||
### Debugging
|
||||
Enable "Print Logs" in the app, then:
|
||||
```bash
|
||||
adb logcat | grep "VCX"
|
||||
```
|
||||
|
||||
## System-Wide HAL Hook
|
||||
|
||||
For system-wide camera replacement (all apps at once), flash the module ZIP:
|
||||
|
||||
### Installation
|
||||
```bash
|
||||
# Flash camswapper-hal-hook-v1.zip in Magisk/KernelSU
|
||||
adb reboot
|
||||
|
||||
# Configure
|
||||
enabled=1
|
||||
source_mode=file # or rtsp
|
||||
video_path=/data/local/camera_magic/video.mp4
|
||||
rtsp_url=rtsp://192.168.1.100:554/stream
|
||||
```
|
||||
|
||||
### Verification
|
||||
```bash
|
||||
# Check hook loaded
|
||||
adb shell getprop wrap.android.hardware.camera.provider@2.7-service-google
|
||||
|
||||
# Check logs
|
||||
adb logcat -d -s CameraHook
|
||||
```
|
||||
|
||||
### Uninstall
|
||||
```bash
|
||||
adb shell su -c "rm -rf /data/adb/modules/camera-hook"
|
||||
adb shell su -c "setprop wrap.android.hardware.camera.provider@2.7-service-google ''"
|
||||
adb shell su -c "rm -rf /data/local/camera_magic"
|
||||
adb reboot
|
||||
```
|
||||
|
||||
## Known Issues
|
||||
|
||||
- Green lines on video edges — Fixed
|
||||
- Camera1 API not stopping threads after recording — Fixed
|
||||
- Camera2 API hook on menu switch — Fixed
|
||||
- 4K audio desync on older devices (runtime permission) — Toggle front/rear camera as workaround
|
||||
|
||||
## Credits
|
||||
|
||||
- [FFmpeg](https://ffmpeg.org/)
|
||||
- [libjpeg-turbo](https://libjpeg-turbo.org/)
|
||||
Reference in New Issue
Block a user