Skip to content

Latest commit

 

History

History
139 lines (131 loc) · 5.03 KB

ROADMAP.md

File metadata and controls

139 lines (131 loc) · 5.03 KB

Wormhole Roadmap

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!

~~ Generation 1 ~~ DONE!

  • Initial Setup
    • Flask Server Setup
      • Dynamic Flask Routes
    • SocketIO Server Setup
      • Dynamic SocketIO Handlers
      • Dynamic SocketIO Rooms
    • Proper Framerate Control
  • 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
  • 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

Generation 2

  • 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
  • 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
  • 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

Generation 3

  • 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

Generation 4

  • 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

Generation 5

  • 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

Generation 6

  • Emulating the entire universe!