A robust and reliable Node.js tool for recording BigBlueButton meeting playback sessions. This tool automatically captures both video and audio from BigBlueButton recordings and exports them into high-quality MP4 files, perfect for archiving or sharing.
- Reliable Export: Handles long recordings (2GB+) export without memory issues or timeouts
- High Quality: Produces high-quality MP4 files with H.264 video and AAC audio
- Resource Efficient: Progressive saving and smart memory management
- User-Friendly: Simple setup and automatic operation
- Cross-Platform: Works on any system that supports Node.js
-
Advanced Export Engine:
- Single-file WebM recording with progressive saving
- Efficient chunk management for large recordings
- Real-time progress tracking and status updates
- Automatic video playback detection
-
Professional Media Processing:
- High-quality H.264/AAC encoding
- Optimized FFmpeg settings for best quality
- Fast start optimization for streaming
- Proper audio/video synchronization
-
Robust Error Handling:
- Comprehensive error detection and recovery
- Automatic cleanup of temporary files
- Detailed logging for troubleshooting
- Graceful process termination
-
Resource Management:
- Efficient memory usage with streaming writes
- Proper file handle management
- Automatic resource cleanup
- Process timeout protection
- Node.js 14.x or higher
- FFmpeg installed and available in PATH
- Chrome or Chromium browser
-
Clone this repository:
git clone https://github.com/ndaboom/bigbluebutton-presentation-recorder.git cd bigbluebutton-presentation-recorder -
Install dependencies:
npm install
- Install dependencies if you have not already:
npm install
- Start the Next.js development server:
npm run dev
- Open your browser to the URL shown in the terminal (default http://localhost:3000), paste a BigBlueButton recording link, and follow progress directly in the UI.
-
Run the recorder(console mode):
node record_meeting.js
-
The tool will:
- Ask you for the meeting playback url
- Open the recording in a headless browser
- Start playback automatically
- Show real-time progress
- Convert/Export the final MP4 file in the current directory
Large webinars can take a long time to play back. The UI/API recorder automatically attempts to play meetings at 1.25x speed. You can adjust this with the BBB_PLAYBACK_RATE environment variable (valid range 0.5 – 2.0). Example:
BBB_PLAYBACK_RATE=1.75 npm run devThe recorder generates:
- High-quality MP4 file with H.264 video and AAC audio
- Filename format:
meeting_YYYY-MM-DDTHH-mm-ss-mmmZ.mp4 - Progress updates in the console
The tool provides detailed progress information:
- Real-time recording progress with percentage
- Chunk sizes and total data recorded
- FFmpeg conversion progress
- Detailed status messages for each step
-
Video Not Playing
- The tool will automatically retry playback
- Check if the meeting URL is accessible
- Ensure you have proper permissions to view the recording
-
FFmpeg Errors
- Verify FFmpeg is installed and in PATH
- Check available disk space
- Ensure write permissions in output directory
-
Memory Issues
- The tool uses progressive saving to handle large recordings
- No special configuration needed for 2GB+ files
- Temporary files are automatically cleaned up
For detailed logging, set the DEBUG environment variable:
DEBUG=1 node record_meeting.js- Fork the project
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a pull request
Distributed under the MIT License. See LICENSE for more information.
Happy recording!
