Skip to content

Commit

Permalink
content: usage: advanced: update video details
Browse files Browse the repository at this point in the history
  • Loading branch information
ES-Alexander committed Dec 30, 2024
1 parent 1e03be1 commit e0f92df
Show file tree
Hide file tree
Showing 12 changed files with 62 additions and 20 deletions.
Binary file added content/usage/advanced/general-config.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
82 changes: 62 additions & 20 deletions content/usage/advanced/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,44 @@ connected to, and how and where it processes and outputs commands and data (incl

{{ easy_image(src="settings-menu", width=100) }}


##### General

The general settings cover top level configuration of Cockpit, to set up who is using it and how it should
connect to a vehicle:

{{ easy_image(src="general-config", width=400) }}

- Create and switch the active user
- Specify the primary network address to connect to the vehicle
- Optionally override the autopilot / MAVLink router telemetry connection address
- Optionally override the WebRTC media connection address, for video streaming
- Optionally customise the WebRTC connection configuration values

##### Video Streams Configuration

Available video streams and connection settings can be viewed and configured:

{{ easy_image(src="video-streams-config", width=400) }}

- Set a custom name for each recognised video stream
- Edit by double clicking the existing name, or clicking the pencil icon
- Limit which IP address(es) are allowed to be used for video streaming
- This is particularly ecommended if there are multiple available connection routes (e.g. if there is a
wired route through a tether, as well as a wireless connection, you should select the tether IP and
remove the wireless one to avoid video stuttering from transmission over wifi).
- Limit which network protocol(s) are allowed for video streaming
- UDP can be lower latency but may drop frames, while TCP enforces frame ordering at the cost of some
increased latency and jitter
- Customise the stream pipeline's jitter buffer duration
- Higher values increase stream latency, but can compensate for network jitter and display the stream
with a smoother / more consistent duration between frames
- Configure [Video Library](#video-library) behaviours
- Recorded video chunks can be combined automatically at the end of the recording session (which may
take a while on low end hardware), or can be left for the user to trigger manually when they want to
download a specific video
- Videos and subtitle files can be zipped together to download them as a single compressed archive, but
the zipping process can take a while if the files are large, which may be inconvenient
- Access the Video Library from here, or from any video recorder mini-widget

### Header Bar

Expand Down Expand Up @@ -275,32 +312,32 @@ vehicle's current position, GPS origin, or home location.

##### Video Player

The video player widget displays an available WebRTC video stream. BlueOS uses the
The video player widget displays an available WebRTC video stream, as set up through the [Video Configuration
menu](#video-streams-configuration). BlueOS uses the
[MAVLink Camera Manager](https://github.com/mavlink/mavlink-camera-manager) to automatically create a WebRTC
stream for applicable video streams.
{{ easy_image(src="video-widget", width=400, center=true) }}

Multiple video widgets can be added to display different video streams.

Configuration allows selecting which video stream to display, flipping the stream image, and choosing how
the frames should fit within the widget:
Configuration allows selecting which video stream to display, flipping and rotating the stream image, and
choosing how the frames should fit within the widget:
- **cover**: maintains the video aspect ratio, but expands the frames to fully cover the widget, and crops
off the sides or top+bottom if they extend beyond the widget boundaries
- **fill**: stretches the frames so that all sides are against the corresponding widget boundary
- **contain**: maintains the video aspect ratio, but shrinks the frames to fully fit inside the widget,
adding transparent padding at the sides / above+below as necessary
{{ easy_image(src="video-config", width=600, center=true) }}
{{ easy_image(src="video-widget-config", width=400, center=true) }}

It is also possible to select the video source IP, which is recommended especially if there are multiple
available connection routes (e.g. if there is a wired route through a tether, as well as a wireless connection,
you should select the tether IP and remove the wireless one to avoid video stuttering from transmission over wifi).
A warning is provided when multiple routes are available:
If your video stream is having some issues, the available stream performance statistics may help to determine
the cause of the problem:

{{ easy_image(src="video-multiple-ip-warning", width=400, center=true) }}
{{ easy_image(src="video-widget-stats", width=170, center=true) }}

Video recording is possible using a [mini widget](#mini-widgets), and directly records the incoming stream
(not the scaled and cropped display of the widget). Cockpit can be configured to
[log some telemetry values](#logs), and record them as a subtitle file for convenient video playback:
Video recording (to Cockpit's [Video Library](#video-library)) is possible using a [mini widget](#mini-widgets),
and directly records the incoming stream (not the scaled and cropped/flipped/rotated display of the widget).
Cockpit can be configured to [log some telemetry values](#telemetry-logs-subtitle-files), and record them as a
subtitle file for convenient video playback:

{{ easy_image(src="video-subtitles", width=450, center=true) }}

Expand Down Expand Up @@ -352,14 +389,12 @@ The current options include
- Video recorder
- allows recording one of the available WebRTC streams, or the full Cockpit tab
- recording occurs in the browser of the display device (not onboard the vehicle)
- this is currently stored in memory and downloaded to the device when finished, which may limit
maximum time for individual recordings
- downloading recordings currently temporarily stores them in memory, which may limit the
maximum time for individual recordings
- recordings are saved using the [mission name](#mission-name) and the starting timestamp
- a warning is displayed if Cockpit is closed while a video is recording, and a recovery popup
appears when Cockpit is next opened in that browser / on that device
- completed recordings are accessible through the [Video Library](#video-library)
{{ easy_image(src="video-recording-config", width=250, center=true) }}
{{ easy_image(src="video-recording-termination-warning", width=400, center=true) }}
{{ easy_image(src="video-recording-recovery", width=400, center=true) }}
{{ easy_image(src="video-recording-termination-warning", width=550, center=true) }}
- Joystick connection status indicator
- Flight mode selector
- GPS status indicator
Expand Down Expand Up @@ -473,7 +508,14 @@ relevant "Joystick mapping", from the button IDs presented by the physical joyst
corresponding buttons in the SVG file. This mapping can then be exported to the computer and/or the vehicle,
and imported to new Cockpit instances/devices later.

## Logs
## Status and Recordings

### Video Library
- Allows processing and previewing video recordings, and downloading them with corresponding subtitle files
- It is possible to select and act on multiple recordings at once, including downloading or deleting as a batch
- Selecting multiple files requires either switching to the relevant mode, or doing a long press on the
first file in the batch, or selecting a set of individual files using `CTRL+Click` or `CMD+Click` (for macOS).
{{ easy_image(src="video-recording-library", width=500, center=true) }}

### Telemetry Logs / Subtitle Files

Expand Down
Binary file removed content/usage/advanced/video-config.png
Binary file not shown.
Binary file not shown.
Binary file modified content/usage/advanced/video-recording-config.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed content/usage/advanced/video-recording-recovery.png
Binary file not shown.
Binary file modified content/usage/advanced/video-recording-termination-warning.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/usage/advanced/video-streams-config.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified content/usage/advanced/video-subtitles.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/usage/advanced/video-widget-config.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/usage/advanced/video-widget-stats.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit e0f92df

Please sign in to comment.