A lightweight local RTMP streaming server designed for wirelessly streaming video from a GoPro camera to devices on your local network. Developed by Byteint.com https://www.byteint.com/
- Local RTMP Server: Stream directly from GoPro to your local network
- Web Interface: View streams in any browser without additional software
- Multi-Format Support: RTMP for streaming software, HLS/DASH for browsers
- Easy Setup: Simple configuration and clear instructions
- Cross-Platform: Works on Windows, macOS, and Linux
- Node.js (v14 or newer)
- FFmpeg (optional, for transcoding)
- GoPro with streaming capabilities
- All devices on the same local network
-
Clone this repository or download the files:
git clone https://github.com/nontro/GoPro-RTMP-Streaming-Server.git cd GoPro-RTMP-Streaming-Server -
Install dependencies:
npm install
-
Create the media directory:
mkdir media chmod 755 media
-
Start the server:
npm start
-
Access the web interface at:
http://your-local-ip:3000Your local IP will be displayed in the console when you start the server.
If you need HLS/DASH streaming (which requires transcoding), there's an alternative approach:
npm install node-media-server@lates
server.js- The main server file that sets up the RTMP and web serverspublic/index.html- Web interface for viewing streams and server informationmedia/- Directory where streaming media files are temporarily stored
- Connect your GoPro to the same Wi-Fi network as this server
- Go to Preferences > Connections > Connect to GoPro App
- Set up Live Streaming through the GoPro Quik app
- In the app, choose Custom as the streaming platform
- Enter the RTMP URL displayed on your web interface (usually
rtmp://your-local-ip:1935/live/stream)
- Some older models may require third-party applications like GoPro Studio or OBS
- Connect your GoPro to your computer via USB
- Use the capture software to direct the stream to your local RTMP server
If you see "address already in use" errors, other services might be using the required ports:
RTMP Server: Port 1935
HTTP Server: Port 8000
Web Interface: Port 3000
To kill processes using these ports:
sudo lsof -i :1935
sudo lsof -i :8000
sudo lsof -i :3000
sudo kill -9 PIDAlternatively, edit server.js to use different ports.
If you see "MediaRoot cannot be written" errors, ensure:
- The
mediadirectory exists - Your user has write permissions to this directory
- The path to the media directory is correctly specified in
server.js
- Ensure your GoPro and server are on the same network
- Verify your GoPro has streaming capabilities enabled
- Check your GoPro's battery level - streaming requires significant power
- Try restarting both the server and the GoPro
MIT
- Node Media Server - The underlying RTMP server implementation
- hls.js - HLS playback library for browsers
- dash.js - DASH playback library for browsers
Contributions are welcome! Please feel free to submit a Pull Request.