Wormhole was originally a simple weekend project to consolidate everything I needed in real-time video streaming into one simple-to-use library. As the project grew, I saw how much potential it had to do much more as an all-in-one video, camera, and data streaming library for Python. That is why I divided Wormhole's development into five generations.
- Generation One is all the essential features I need for a usable streaming library. This includes basic mjpeg and raw streams, but also basic protocol negotiations and a simple-to-use API.
- Generation Two expands on gen one to make Wormhole a fully-fledged streaming library with all the convenience features I could need.
- Generation Three expands on gen two to support high bitrate streams, hopefully bringing real-time 4k60fps streams over the air.
- Finally, Generation Four and beyond are all the visions I have to make Wormhole a fully-fledged video streaming library capable of emulating other tools like Zoom or Google Meet.
Of course, this project won't be done in just over a weekend or two. Wormhole's development will most likely last for years, adding incremental features whenever I feel it's missing. If you would like to help with this journey, feel free to submit a PR anytime. Nevertheless, the goals shown below are just preliminary plans, so if you feel like there is a feature that is missing, feel free to edit this list!
- Initial Setup
- Flask Server Setup
- Dynamic Flask Routes
- SocketIO Server Setup
- Dynamic SocketIO Handlers
- Dynamic SocketIO Rooms
- Proper Framerate Control
- Flask Server Setup
- Basic Video Rendering Functionality
- Webcam / Cameras
- Video Files
- Image Files
- Copies of Videos
- Custom Video Streams
- Basic Video Streaming Functionality
- MJPEG Streams
- Raw Image Streams
- Raw Streams
- Basic Video Viewing Functionality
- MJPEG Streams
- Raw Image Streams
- Raw Streams
- Managed Streaming
- Syncing
- Client-Server Sync
- Stream Information Sync
- Stream Synchronization
- Basic Protocol Negotiation
- Syncing
- Basic Video Processing
- Dynamic Video Manipulation
- Video Modifiers
- Video Subscribers
- Error Handling
- Rendered Error Messages
- Logging
- Writing Video to File
- Multi Codec Support
- .MP4 Support
- .AVI Support
- .WEBM Support
- Threaded Support
- Example Code
- Using a Python profiler to iron out performance issues
- Publish on PyPi
- Lightweight Javascript Client
- Lightweight Python Client
- SSL support
- Dynamic FPS
- Server Support
- Client Support
- Advanced Protocol Negotiation
- Dynamic Python Module Loading instead of static
- Dynamic Negotiation Depending On What Modules Are Loaded
- Use Fallback is one fails
- Multiple Attempts in case of network failure
- Advanced Video Rendering Functionality
- Render Video from Streaming Sites
- Youtube
- Vimeo
- Twitch
- Render Video from Streaming Sites
- Advanced Video Streaming Functionality
- b64 Streams
- TurboJpeg Streams
- Advanced Video Viewing Functionality
- b64 Streams
- TurboJpeg Streams
- Advanced Video Processing
- Text Rendering
- FPS Rendering
- Debug Rendering
- Image Rendering
- Transparency Rendering
- Wormhole Watermark
- Text Rendering
- Advanced Video File Writing
- Chunking (new file every x minutes)
- Autodetect Video Capabilities
- Controllable Video Thread
- Migrate setup to new config and/or backend
- Look into using poetry or some other dependency management system.
- Interactive Shell Fix / Support
- Ability to start and stop streams
- Ability to pause and resume streams
- Safe thread closures
- Syncing Color Space
- Syncing Pixel Size
- Automatic Color Space Conversion
- Dynamic Protocol Switching
- Server
- Client
- ZMQ Compatibility
- Server
- Client
- Integration
- WebRTC Compatibility
- Server
- Client
- 4k 60fps Streaming Capability
- Dynamic resizing of video frames
- Dynamic Bitrate Control
- 🔊 Sound Sharing!!!
- File Sharing
- HLS Support
- Server
- Client
- RTMP Support
- Server
- Client
- MPEG-DASH Support
- Server
- Client
- More advanced authentication & permission management
- More Clients on More Platforms
- Javascript/Typescript Client & Server
- Java/Kotlin Client & Server
- C/C++ Client & Server
- Realtime streaming to Twitch, Youtube, & More
- VR video
- Surround Sound
- Emulating the entire universe!