Streamberry-OBS is a professional OBS Studio plugin that automatically discovers Streamberry devices on your network and provides ultra-low latency streaming with multiple protocol support.
๐ Quick Start โข ๐ฆ Download โข ๐ Documentation โข ๐ Report Bug โข ๐ก Feature Request
| ๐ฏ Feature | ๐ Description |
|---|---|
| ๐ Auto-Discovery | Automatically finds Streamberry devices on your network (no manual IP entry!) |
| ๐ Ultra-Low Latency | WebSocket protocol provides 50-150ms latency - perfect for gaming and live streaming |
| ๐ญ 5 Streaming Protocols | Choose the best protocol for your needs - WebSocket, HTTP H.264, MJPEG, RTSP, DASH |
| ๐ฌ Hardware Acceleration | H.264 hardware decoding when available for silky smooth playback |
| ๐บ 4K Support | Stream in stunning 4K resolution at 30fps - perfect for high-quality content |
| ๐ Live Protocol Switching | Change protocols on-the-fly without restarting OBS |
| ๐ฑ Multi-Device Support | Connect multiple Android devices simultaneously - perfect for multi-cam setups |
| ๐ฏ Pause/Resume | Smooth hide/show with PipeWire-style state management |
| ๐ก๏ธ Stable & Safe | Thread-safe operations, robust error handling, zero crashes |
| ๐ Cross-Platform | Works seamlessly on Linux, macOS, and Windows |
| ๐ 100% Free & Open Source | No subscriptions, no limitations, forever free |
| ๐ญ Protocol | ๐ Port | โก Latency | ๐ฏ Best For | ๐ Compatibility |
|---|---|---|---|---|
| โก WebSocket | 8080 | 50-150ms | Live streaming, gaming, real-time, 4K capable | โญโญโญโญโญ |
| ๐ฌ HTTP H.264 | 8081 | 100-300ms | Recording, high quality, 4K capable | โญโญโญโญโญ |
| ๐ธ MJPEG | 8081 | 200-500ms | Maximum compatibility | โญโญโญโญโญ |
| ๐น RTSP | 8554 | 150-400ms | Professional workflows, 4K lossless | โญโญโญโญโญ |
| ๐ MPEG-DASH | 8081 | 300-1000ms | Adaptive bitrate streaming | โญโญโญโญ |
๐ก Pro Tip: Use WebSocket for lowest latency, RTSP for maximum compatibility and lossless 4K streaming
# Install dependencies
sudo pacman -S obs-studio qt6-base qt6-websockets ffmpeg curl openssl cmake gcc pkgconf
# Clone and build
git clone https://github.com/StreamBerryLabs/streamberry-obs.git
cd streamberry-obs
./build.sh
# Install plugin
sudo cp build/berrystreamcam.so /usr/lib/obs-plugins/# Install dependencies
sudo apt install obs-studio libqt6-dev qt6-websockets-dev libavcodec-dev \
libavutil-dev libswscale-dev libavformat-dev libcurl4-openssl-dev \
libssl-dev cmake build-essential pkg-config
# Clone and build
git clone https://github.com/StreamBerryLabs/streamberry-obs.git
cd streamberry-obs
./build.sh
# Install plugin
sudo cp build/berrystreamcam.so /usr/lib/obs-plugins/# Install dependencies
sudo dnf install obs-studio qt6-qtbase-devel qt6-qtwebsockets-devel \
ffmpeg-devel libcurl-devel openssl-devel cmake gcc-c++ pkgconfig
# Clone and build
git clone https://github.com/StreamBerryLabs/streamberry-obs.git
cd streamberry-obs
./build.sh
# Install plugin
sudo cp build/berrystreamcam.so /usr/lib64/obs-plugins/If you're using OBS Studio via Flatpak, use the dedicated Flatpak build:
Option 1: Using the build script (Recommended)
# Clone repository
git clone https://github.com/StreamBerryLabs/streamberry-obs.git
cd streamberry-obs
# Run Flatpak build script (handles everything automatically)
./build-flatpak.shOption 2: Manual Flatpak build
# Install flatpak-builder
sudo apt install flatpak-builder # Ubuntu/Debian
# or
sudo dnf install flatpak-builder # Fedora
# or
sudo pacman -S flatpak-builder # Arch
# Add Flathub repository
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# Install OBS Studio Flatpak
flatpak install flathub com.obsproject.Studio
# Build and install plugin
flatpak-builder --force-clean --install --user \
build-flatpak \
com.obsproject.Studio.Plugin.BerryStreamCam.jsonOption 3: Install from .flatpakref (when available)
flatpak install berrystreamcam.flatpakrefFlatpak Troubleshooting:
- โ
Verify OBS Flatpak is installed:
flatpak list | grep obs - โ
Check plugin loads:
flatpak run com.obsproject.Studio --verbose - โ Network permissions are automatically granted for WebSocket connections
- โ
Plugin location:
~/.var/app/com.obsproject.Studio/config/obs-studio/plugins/ - โ
View logs:
journalctl --user -f | grep obs
# Install Homebrew (if not installed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install dependencies
brew install obs qt6 ffmpeg curl openssl cmake
# Clone and build
git clone https://github.com/StreamBerryLabs/streamberry-obs.git
cd streamberry-obs
./build.sh
# Install plugin
mkdir -p "$HOME/Library/Application Support/obs-studio/plugins/"
cp -r build/berrystreamcam.plugin "$HOME/Library/Application Support/obs-studio/plugins/"- Install Visual Studio 2022 with C++ development tools
- Install CMake (3.16+)
- Install OBS Studio (30.0+)
- Install Qt 6
# Clone repository
git clone https://github.com/StreamBerryLabs/streamberry-obs.git
cd streamberry-obs
# Create build directory
mkdir build
cd build
# Configure (adjust paths as needed)
cmake .. -G "Visual Studio 17 2022" -A x64 ^
-DQt6_DIR="C:\Qt\6.5.0\msvc2019_64\lib\cmake\Qt6" ^
-DOBS_SOURCE_DIR="C:\obs-studio" ^
-DOBS_BUILD_DIR="C:\obs-studio\build"
# Build
cmake --build . --config Release
# Install (run as Administrator)
copy Release\berrystreamcam.dll "%ProgramFiles%\obs-studio\obs-plugins\64bit\"Download the Streamberry app from GitHub Releases or build from source.
Ensure your Android device and computer are on the same WiFi network or subnet.
- ๐ Open OBS Studio
- โ Add Source: Click
+in the Sources panel - ๐ฌ Select "BerryStreamCam"
- ๐ Wait for Discovery: Plugin automatically scans for devices (5-10 seconds)
- ๐ฑ Select Your Device: Choose from the dropdown list
- โก Choose Protocol: Select "WebSocket" for lowest latency
- โ Click OK: Stream starts automatically!
โ Device Not Found?
- โ Check both devices are on same network
- โ Verify Streamberry app is running
- โ Try manual IP: Enter IP address in the "Manual IP" field
- โ Check firewall: Allow ports 8080, 8081, 8554
- โ Disable VPN on either device
- โ Restart your router if necessary
๐ฌ No Video Displayed?
- โ Check Android app shows "Connected" status
- โ Try different protocol (switch to HTTP H.264)
- โ Restart OBS Studio
- โ Check OBS logs: Help โ Log Files โ Current Log
- โ Verify camera permissions in Android app
- โ Try hiding and showing the source
โก High Latency?
- โ Switch to WebSocket protocol
- โ Use 5GHz WiFi instead of 2.4GHz
- โ Reduce resolution in Android app (720p recommended)
- โ Move closer to WiFi router
- โ Close bandwidth-heavy applications
- โ Use Quality of Service (QoS) on router
- Connection Type: Auto-Discovery or Manual IP
- Device: List of discovered Streamberry devices
- Manual IP Address: Enter IP when auto-discovery fails
- Protocol: Select streaming protocol
- Refresh Devices: Manually trigger device scan
| Requirement | Details |
|---|---|
| Network | Same local network/subnet |
| Ports | 8080 (WebSocket), 8081 (HTTP), 8554 (RTSP) |
| Bandwidth | 5-10 Mbps for 1080p@30fps, 20-30 Mbps for 4K@30fps |
| WiFi | 5GHz required for 4K, 5GHz recommended for 1080p, 2.4GHz for 720p |
| Firewall | Allow inbound on required ports |
For Lowest Latency (50-150ms):
- โ Use WebSocket protocol
- โ 720p @ 30fps
- โ 5GHz WiFi
- โ Close to router
For Best Quality:
- โ Use HTTP H.264 protocol
- โ 1080p @ 60fps or 4K @ 30fps
- โ Wired ethernet on PC
- โ 5GHz WiFi or wired ethernet for phone
- โ Hardware encoding on Android device
For Stunning 4K Streaming:
- โ Use HTTP H.264 or WebSocket protocol
- โ 4K (3840x2160) @ 30fps
- โ Gigabit ethernet on both devices (recommended)
- โ High-end Android device with hardware H.264 encoder
- โ Minimum 20-30 Mbps bandwidth
- โ Hardware decoding on PC (GPU acceleration)
For Maximum Compatibility:
- โ Use RTSP protocol
- โ 720p to 4K @ 30fps (RTSP supports lossless 4K streaming)
- โ Any network type
- โ Industry-standard protocol
- โ Compatible with all professional video software
For Lossless 4K Professional Streaming:
- โ Use RTSP protocol
- โ 4K (3840x2160) @ 30fps lossless
- โ Wired Gigabit ethernet (required for 4K)
- โ Professional-grade Android device
- โ 30-50 Mbps bandwidth for 4K lossless
- โ Industry-standard streaming protocol
- โ Perfect for professional broadcasting and production
# Install dependencies (see platform-specific instructions above)
# Clone repository
git clone https://github.com/StreamBerryLabs/streamberry-obs.git
cd streamberry-obs
# Build
./build.sh
# The plugin will be in build/berrystreamcam.so (Linux/macOS)
# or build/Release/berrystreamcam.dll (Windows)โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ OBS Studio โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ BerryStreamCam Plugin โ โ
โ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ Source Core โ โ Device Discovery โ โ โ
โ โ โ โ โ โ โ โ
โ โ โ - Properties โโโโโโโโค - mDNS Scanner โ โ โ
โ โ โ - Rendering โ โ - Port Probing (8080/81/54) โ โ โ
โ โ โ - Threading โ โ - Auto-refresh (5s) โ โ โ
โ โ โโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โ โ
โ โ โ โ โ
โ โ โโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ Protocol Handlers โ โ โ
โ โ โ โ โ โ
โ โ โ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โ โ โ
โ โ โ โ WebSocket โ โ RTSP โ โ HTTP โ โ โ โ
โ โ โ โ Handler โ โ Handler โ โ Handler โ โ โ โ
โ โ โ โ โ โ โ โ โ โ โ โ
โ โ โ โ Port: 8080 โ โ Port: 8554 โ โ Port: 8081 โ โ โ โ
โ โ โ โ Protocol: โ โ Protocol: โ โ Protocols: โ โ โ โ
โ โ โ โ - JSON msgs โ โ - RTSP/RTP โ โ - Raw H.264 โ โ โ โ
โ โ โ โ - Base64 โ โ - NAL units โ โ - MJPEG โ โ โ โ
โ โ โ โ - H.264 โ โ - SDP โ โ - DASH โ โ โ โ
โ โ โ โโโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ โโโโโโโโโฌโโโโโโโโ โ โ โ
โ โ โโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโ โ โ
โ โ โ โ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ H.264 Decoder (FFmpeg) โ โ โ
โ โ โ โ โ โ
โ โ โ - Decodes H.264 NAL units โ โ โ
โ โ โ - YUV โ RGBA conversion โ โ โ
โ โ โ - Hardware acceleration โ โ โ
โ โ โ - Low-latency mode โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ GPU Texture Upload โ โ โ
โ โ โ โ โ โ
โ โ โ - Create/update OBS texture โ โ โ
โ โ โ - Direct GPU memory โ โ โ
โ โ โ - Minimal CPU usage โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ User Interface (Qt) โ โ โ
โ โ โ โ โ โ
โ โ โ - Device list widget โ โ โ
โ โ โ - Protocol selection โ โ โ
โ โ โ - Connection status โ โ โ
โ โ โ - Refresh button โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
WiFi Network
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Streamberry Android App โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ Streaming Servers โโ
โ โ โโ
โ โ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโ โโ
โ โ โ OBS Droid โ โ RTSP Server โ โ HTTP Server โ โโ
โ โ โ WebSocket โ โ โ โ โ โโ
โ โ โ Server โ โ - RTP/RTCP โ โ - DASH โ โโ
โ โ โ โ โ - SDP โ โ - MJPEG โ โโ
โ โ โ Port: 8080 โ โ โ โ - Raw H.264 โ โโ
โ โ โ โ โ Port: 8554 โ โ - Player UI โ โโ
โ โ โ /stream โ โ โ โ โ โโ
โ โ โ /health โ โ /stream โ โ Port: 8081 โ โโ
โ โ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโ โโ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ mDNS Service โโ
โ โ โโ
โ โ Service Name: Streamberry-{IP} โโ
โ โ Service Type: _streamberry._tcp.local โโ
โ โ Published Port: 8080 โโ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ Video Encoding Pipeline โโ
โ โ โโ
โ โ Camera โ Encoder โ H.264 NAL Units โ Servers โโ
โ โ โโ
โ โ - MediaCodec H.264 โโ
โ โ - SPS/PPS extraction โโ
โ โ - Annex-B format โโ
โ โ - Real-time encoding โโ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Data Flow Diagrams
Android App OBS Plugin
โโโโโโโโโโโโโ โโโโโโโโโโ
1. Start Server
(Port 8080) โโโโโโโโโโโโโโโโโโโโโบ Discover via mDNS
Probe /health endpoint
2. Client Connect โโโโโโโโโโโโโโโโโ WebSocket connect to
Send Hello msg โโโโโโโโโโโโโโโโโโโบ /stream endpoint
Parse capabilities
3. Encode Frame
(H.264 NAL)
โ
Convert to Annex-B
โ
Base64 encode
โ
Wrap in JSON
{
"type": "video_frame",
"pts": 123456,
"keyframe": true,
"data": "..."
} โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโบ Parse JSON
Decode base64
Extract H.264
โ
H.264 Decoder
โ
YUV โ RGBA
โ
GPU Texture
โ
OBS Render
4. Stats/Metadata โโโโโโโโโโโโโโโโโ Request stats (optional)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ OBS Main Thread โ
โ โ
โ - GUI events โ
โ - Rendering โ
โ - Texture updates โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ๏ฟฝ๏ฟฝโโโโโโโโโโโโโ
โ
โ spawn
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Discovery Thread โ
โ โ
โ while (active) { โ
โ scan_network(); // mDNS + port probing โ
โ update_device_list(); โ
โ sleep(5s); โ
โ } โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
User clicks "Connect"
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Streaming Thread โ
โ โ
โ connect_to_device(protocol); โ
โ while (streaming) { โ
โ frame = receive_frame(); // From protocol handler โ
โ decode(frame); // H.264 decoder โ
โ push_to_queue(rgba_data); // Thread-safe queue โ
โ } โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ Frame Queue
โ (Thread-safe)
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ OBS Rendering (Main Thread) โ
โ โ
โ frame = pop_from_queue(); โ
โ upload_to_gpu_texture(frame); โ
โ render_texture(); โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
streamberry-obs/
โโโ CMakeLists.txt # Build configuration
โโโ build.sh # Build script
โโโ src/
โ โโโ plugin-main.cpp # OBS plugin registration
โ โโโ berrystreamcam-source.* # Main source implementation
โ โโโ common.hpp # Shared types and constants
โ โโโ discovery/ # Auto-discovery system
โ โ โโโ device-discovery.* # Network scanning
โ โ โโโ mdns-scanner.* # mDNS/Bonjour
โ โโโ protocols/ # Protocol handlers
โ โ โโโ websocket-handler.* # WebSocket (Port 8080)
โ โ โโโ http-handler.* # HTTP (Port 8081)
โ โ โโโ rtsp-handler.* # RTSP (Port 8554)
โ โโโ decoder/ # Video decoding
โ โ โโโ h264-decoder.* # H.264/MJPEG decoder
โ โโโ ui/ # User interface
โ โโโ device-list-widget.* # Device selection UI
โโโ docs/ # Documentation
1. Add New Protocol:
// 1. Add to ProtocolType enum in common.hpp
enum class ProtocolType {
// ... existing
MY_NEW_PROTOCOL,
};
// 2. Create handler in src/protocols/
class MyProtocolHandler {
bool connect(const std::string& url);
void disconnect();
bool receive_frame(VideoFrame& frame);
};
// 3. Update device-discovery.cpp to detect protocol
// 4. Update UI in device-list-widget.cpp2. Improve Auto-Discovery:
// Modify src/discovery/device-discovery.cpp
// Add new scanning methods or improve existing ones# Build with tests enabled
mkdir -p build && cd build
cmake .. -DENABLE_TESTS=ON
make
# Run tests
ctest --output-on-failure// Scan network for devices (runs every 5 seconds)
std::vector<StreamDevice> devices = discovery_->scan_network();
// Check specific device
StreamDevice device;
bool found = discovery_->probe_device("192.168.1.100", device);// WebSocket Handler
WebSocketHandler ws;
ws.connect_to_server("ws://192.168.1.100:8080/stream");
VideoFrame frame;
if (ws.receive_frame(frame)) {
// Process frame
}
ws.disconnect_from_server();
// HTTP Handler
HttpHandler http;
http.connect("http://192.168.1.100:8081/stream.h264", ProtocolType::HTTP_RAW_H264);
if (http.receive_frame(frame)) {
// Process frame
}
http.disconnect();H264Decoder decoder;
decoder.initialize();
uint8_t* decoded_data;
int width, height;
if (decoder.decode_frame(encoded_data, encoded_size, &decoded_data, &width, &height)) {
// decoded_data contains RGBA pixels
}
decoder.shutdown();| Feature | BerryStreamCam | DroidCam | IP Webcam | Others |
|---|---|---|---|---|
| ๐ Auto-Discovery | โ | โ | โ | โ |
| โก Ultra-Low Latency | โ (50ms) | |||
| ๐ญ Multiple Protocols | โ (5) | |||
| ๐ฑ Multi-Device | โ | โ | โ | |
| ๐ Live Switching | โ | โ | โ | โ |
| ๐ Free & Open Source | โ | โ | ||
| ๐ฌ Hardware Decoding | โ | โ | ||
| ๐ Cross-Platform | โ | |||
| ๐ช Active Development | โ |
Legend: โ
Fully Supported |
-
Enhanced Auto-Discovery
- mDNS/Bonjour service discovery (Linux: Avahi, macOS: native, Windows: DNS-SD)
- QR code scanning for instant connection
- Bluetooth Low Energy (BLE) discovery
- USB connection support (ADB)
- Remember previously connected devices
-
Audio Streaming
- Audio capture from Android microphone
- Audio sync with video
- Multiple audio sources (mic, system audio)
- Audio monitoring in OBS
-
Advanced Features
- PTZ (Pan-Tilt-Zoom) controls via touch gestures
- Multiple camera support (front/back switching)
- Custom resolution/bitrate selection
- Recording directly on Android device
- Overlay graphics (OSD) on Android
-
Performance
- Hardware encoding on Android (MediaCodec)
- Zero-copy memory transfers
- Multi-threaded decoding
- Adaptive bitrate streaming
- Network bandwidth optimization
-
Professional Features
- NDI protocol support
- SRT (Secure Reliable Transport)
- Virtual camera passthrough
- Multi-camera sync
- Timecode synchronization
-
User Experience
- One-click pairing
- Connection presets
- Custom overlays
- Stream health monitoring
- Automatic reconnection
-
Platform Expansion
- iOS support (iPhone/iPad)
- Linux phone support
- Raspberry Pi camera support
- Web browser source (WebRTC)
-
Cloud Features
- Remote device access (over internet)
- Cloud device registry
- Share device with team members
- Remote monitoring dashboard
|
C++17 |
Qt 6 |
OBS Studio |
FFmpeg |
CMake |
|
libcurl |
OpenSSL |
Linux |
macOS |
Windows |
Core Technologies:
- ๐ท C++17 - Modern C++ with RAII and smart pointers
- ๐ท Qt 6 - Cross-platform framework for networking and UI
- ๐ท FFmpeg - Industry-standard multimedia framework
- ๐ท CMake - Cross-platform build system
- ๐ท WebSockets - Real-time bidirectional communication
- ๐ท RTSP/RTP - Standard streaming protocols
- ๐ท H.264 - Industry-standard video codec
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow C++17 standards
- Use RAII for resource management
- Add error handling with try-catch
- Document public APIs with comments
- Test on multiple platforms
- Update README for new features
๐ฐ Is BerryStreamCam really free?
Yes! BerryStreamCam is 100% free and open source under GPL-2.0 license. No hidden costs, no subscriptions, no premium features. Forever free!
๐ฑ Which Android versions are supported?
The Streamberry Android app supports Android 7.0 (Nougat) and above. The plugin works with any device running the Streamberry app.
๐ฅ Can I use multiple cameras at once?
Absolutely! You can add multiple BerryStreamCam sources in OBS, each connected to a different Android device. Perfect for multi-cam productions!
๐ Does it work over the internet?
Currently, BerryStreamCam requires both devices to be on the same local network. Internet streaming is planned for v2.0 using secure tunneling.
โก Which protocol should I use?
- WebSocket: Best for live streaming, gaming, real-time (50-150ms latency)
- HTTP H.264: Best for recording, high quality (100-300ms latency)
- RTSP: Best for professional workflows, OBS scenes (150-400ms latency)
- MJPEG: Best for maximum compatibility (200-500ms latency)
๐ Is it secure?
BerryStreamCam operates on your local network only. All communication happens directly between your devices without any cloud servers or third-party services.
๐ค Does it support audio?
Audio streaming is planned for v1.1.0. Currently, only video is supported. You can use OBS's audio input capture as a workaround.
๐ง Which Linux distros are supported?
BerryStreamCam works on all major Linux distributions including:
- Arch Linux / Manjaro / Garuda
- Ubuntu / Debian / Linux Mint
- Fedora / RHEL / CentOS Stream
- openSUSE
- Gentoo
- And many more!
๐ป What are the system requirements?
Minimum:
- OBS Studio 30.0+
- 4GB RAM
- Dual-core CPU
- WiFi or Ethernet connection
Recommended (1080p):
- OBS Studio 30.2+
- 8GB RAM
- Quad-core CPU with hardware H.264 decoding
- 5GHz WiFi or Gigabit Ethernet
For 4K Streaming:
- OBS Studio 30.2+
- 16GB RAM
- Hexa-core CPU or hardware H.264 decoder
- Gigabit Ethernet (recommended) or WiFi 6
- High-end Android device (Snapdragon 8 Gen 2+ or equivalent)
๐ How do I update the plugin?
- Download the latest release from GitHub
- Stop OBS Studio
- Replace the old plugin file with the new one
- Restart OBS Studio
Or rebuild from source using ./build.sh for the latest development version.
This project is licensed under the GNU General Public License v2.0 - see the LICENSE file for details.
- OBS Studio - https://obsproject.com
- Qt Framework - https://www.qt.io
- FFmpeg - https://ffmpeg.org
- libcurl - https://curl.se
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: swadhinbiswas.cse@gmail.com
- Lines of Code: ~5,000+
- Files: 19 source files
- Protocols Supported: 5
- Max Resolution: 4K (3840x2160) @ 30fps
- Platforms: Linux, macOS, Windows
- Languages: C++ (95%), CMake (5%)
"BerryStreamCam works flawlessly! Latency is incredibly low, and setup was a breeze." - User
"Finally, a DroidCam alternative that's open source and actually works better!" - Streamer
"The auto-discovery feature is amazing. No more typing IP addresses!" - Content Creator
"Streaming in 4K at 30fps with barely any latency - this is next level! My production quality has gone through the roof!" - Professional Streamer
"I use 3 phones in 4K mode for my cooking channel. The multi-device support is incredible!" - Content Creator
Swadhin Biswas ๐ป ๐จ ๐ ๐ค |
Creator & Lead Developer
If you found BerryStreamCam useful, please consider:
โญ Star this repo โข ๐ด Fork it โข ๐ข Share with others
Built with ๐ฅ Camera Tech โข โก Real-time Streaming โข ๐ Open Source Spirit
ยฉ 2025 Swadhin Biswas. Licensed under GPL-2.0