bluerobotics / BlueOS

The open source platform for ROV, USV, robotic system operation, development, and expansion.
https://blueos.cloud/docs/
Other
151 stars 73 forks source link

core: frontend: video streams -> multimedia pipeline manager #2264

Open ES-Alexander opened 9 months ago

ES-Alexander commented 9 months ago

Current behaviour

The Video Streams interface page is currently device-focused, which

  1. can involve a lot of scrolling through devices to find active streams,
  2. is poorly scalable to handling desirable extensions to the pipeline systems (like audio, external processing, and (re)encoding), and
  3. is poorly equipped to display even what the current pipelines involve (which can be important for debugging and understanding resource usage, e.g. if one video source has several WebRTC outputs active).

Expected or desired behaviour

It seems more intuitive (and scalable) to change the page to being pipeline-focused, where the user can see the details of their active pipelines (likely with a simplified interface in standard mode and a detailed one in pirate mode), and can more directly control the pipeline processing and outputs (including disabling or removing select parts they don't want to keep).

Through discussion with @joaoantoniocardoso, we've come up with some interface ideas that should hopefully cover this, and allow BlueOS to advance into a maintainable future of multimedia handling:

Screenshot 2023-12-20 at 1 55 06 am

Prerequisites

ES-Alexander commented 9 months ago

Where relevant, we could also consider adding resource usage indicators (e.g. to show CPU and memory usage of elements, and potentially also to show network bandwidth consumption of outputs).

patrickelectric commented 9 months ago

To add on this, the proposal appears to be direct related to the software architecture proposed here: https://github.com/mavlink/mavlink-camera-manager/issues/274#issuecomment-1692115707

joaoantoniocardoso commented 9 months ago

Where relevant, we could also consider adding resource usage indicators (e.g. to show CPU and memory usage of elements, and potentially also to show network bandwidth consumption of outputs).

This would be very useful for development/debugging. Here is a related plugin called gst-instruments .

ES-Alexander commented 6 months ago

This could also be used for modification of the standard gstreamer pipeline, which would be useful for cases like this one.