Skip to content

Usage Guide

Gordin508 edited this page Mar 20, 2020 · 6 revisions

Usage Guide

User Application

To launch MORR with its default configuration, simply launch UI.exe in the application's directory. After the successful launch of the application you will find a tray icon in the taskbar of Windows. If you wish to customize the configuration first, see the section Configuration File below.

Startup parameters

Following parameters can be passed to UI.exe when launching the application:

  • you can supply a custom configuration path
  • no-force-german-ui will set the language of the UI to english
  • Example using both: UI.exe no-force-german-ui MyConfig.morr to launch MORR with English locale and the configuration file "MyConfig.morr"

User Interactions

To open the menu, rightclick the trayicon. The menu allows you to

  • Start/Stop a recording
  • Open the recordings directory
  • Quit the application

Recording

Creating a recording is straightforward:

  • Open the menu and choose Start Recording.
  • Read the presented information and choose accept. The recording is now running as indicated by the yellow border around your screen as well as the trayicon's color being red.
  • To finish a recording, simply open the menu again and choose Stop Recording. In the following dialog, choose Save if you wish to keep the recording or Discard if it shall be deleted instead.

Note On Windows version 1809, additional steps is necessary:

  • After dismissing the information dialog presented when starting a recording, a new window will open titled Capture with...
  • For usual operation, click on Share your window, choose Share your display instead and select the display(s) you wish to record
  • Click Ok to start the recording process.

Configuration File

The configuration file is being used to define global and module specific options. Therefore a configuration file is required for any recording or processing session. The default configuration file titled config.morr can be found in the application's root directory alongside the executable.

The configuration file is encoded using the JSON format and its file extension is .morr

--

Example

{
  "MORR.Core.Modules.GlobalModuleConfiguration": {
    "EnabledModules": [
      "MORR.Core.Data.IntermediateFormat.Json.JsonIntermediateFormatSerializer",
      "MORR.Core.Data.IntermediateFormat.Json.JsonIntermediateFormatDeserializer",
      "MORR.Core.Data.Capture.Video.Desktop.DesktopCapture",
      "MORR.Modules.WindowManagement.WindowManagementModule",
      "MORR.Modules.Keyboard.KeyboardModule",
      "MORR.Modules.Mouse.MouseModule",
      "MORR.Modules.Clipboard.ClipboardModule",
	  "MORR.Modules.WebBrowser.WebBrowserModule"
    ]
  },
  "MORR.Core.Session.SessionConfiguration": {
    "Encoders": [
      "MORR.Core.Data.Transcoding.Json.JsonEncoder",
      "MORR.Core.Data.Transcoding.Mpeg.MpegEncoder"
    ],
    "Decoders": [
      "MORR.Core.Data.Transcoding.Json.JsonDecoder"
    ],
    "RecordingDirectory": "%userprofile%\\Videos\\MORR"
  },
  "MORR.Modules.Mouse.MouseModuleConfiguration": {
    "SamplingRateInHz": 10,
    "Threshold": 50
  },
  "MORR.Modules.WebBrowser.WebBrowserModuleConfiguration": {
    "UrlSuffix": "60024/"
  },
  "MORR.Core.Data.Transcoding.Json.JsonEncoderConfiguration": {
    "RelativeFilePath": "event_data.json"
  },
  "MORR.Core.Data.Transcoding.Json.JsonDecoderConfiguration": {
    "RelativeFilePath": "event_data.json"
  },
  "MORR.Core.Data.Transcoding.Mpeg.MpegEncoderConfiguration": {
    "Width": 1920,
    "Height": 1080,
    "KiloBitsPerSecond": 4000,
    "FramesPerSecond": 60,
    "RelativeFilePath": "desktop_capture.mp4"
  },
  "MORR.Core.Data.Capture.Video.Desktop.DesktopCaptureConfiguration": {
    "PromptUserForMonitorSelection": false,
    "MonitorIndex": 0
  }
}

In the example above, only the Keyboard and the Webbrowser module are activated and configured.

--

GlobalModuleConfiguration

Identifier:

MORR.Core.Modules.GlobalModuleConfiguration

The GlobalModuleConfiguration is responsible for module loading configuration. Therefore the current configuration only offers a single property EnabledModules.

Currently available modules:

DesktopCapture (required)

Identifier:

MORR.Core.Data.Capture.Video.Desktop.DesktopCapture

DesktopCapture is an internal module in MORR and is used to capture all generated events and offer them to the encoder. Therefore this module is required for correct operation.

This module requires additional configuration entries. Configuration example:

"MORR.Core.Data.Capture.Video.Desktop.DesktopCaptureConfiguration": {
  "PromptUserForMonitorSelection": false,
  "MonitorIndex": 0
}

JsonIntermediateFormatSerializer (recommended)
JsonIntermediateFormatDeserializer (recommended)

Identifiers:

MORR.Core.Data.IntermediateFormat.Json.JsonIntermediateFormatSerializer
MORR.Core.Data.IntermediateFormat.Json.JsonIntermediateFormatDeserializer

These (de-)serializers for the intermediate Json format are internal modules required for Json (de-)serialization. See also Encoders below.

KeyboardModule (optional)

Identifier:

MORR.Modules.Keyboard.KeyboardModule

The KeyboardModule detects keypresses on the keyboard and produces KeyboardInteractEvents. These are defined in the Functional Specifications Document in chapter 6.3.3.

WebBrowserModule (optional)

Identifier:

MORR.Modules.Webbrowser.WebBrowserModule

The Webbrowser Module detects BrowserEvents offered by the Webextension. For more information on how to use the WebBrowser Extension, please take a look at the upcoming chapter Browser Extension. The BrowserEvents are defined in the Functional Specification Document in chapter 6.3.5.

This module requires additional configuration entries. Configuration example:

"MORR.Modules.WebBrowser.WebBrowserModuleConfiguration": {
  "UrlSuffix": "60024/"
}

WindowManagementModule (optional)

Identifier:

"MORR.Modules.WindowManagement.WindowManagementModule

The WindowManagement module detects events directly regarding application windows like window minimization. These events are defined in the Functional Specification Document in chapter 6.3.1.

MouseModule (optional)

Identifier:

MORR.Modules.Mouse.MouseModule

The Mouse module is responsible for mouse-related events. These events are defined in the Functional Specification Document in chapter 6.3.2.

This module requires additional configuration entries. Configuration example:

"MORR.Modules.Mouse.MouseModuleConfiguration": {
  "SamplingRateInHz": 10,
  "Threshold": 50
}

ClipboardModule (optional)

Identifier:

MORR.Modules.Clipboard.ClipboardModule

The Clipboard module is responsible to record clipboard-related events. These events are defined in the Functional Specification Document in chapter 6.3.4.

--

SessionConfiguration

The SessionConfiguration contains information about the encoder and decoder which should be used for recording or processing, as well as the recording directory. For an example refer to the complete example at the beginning of this document.

Encoder (required)

Identifier:

Encoder

You can use this property to define the encoder(s) which should be used by the application for a recording session.

Currently available encoders are:

OutputFormatter (viable for testing in CLI mode)

The output formatter allows the CLI to show the recorded events via the commandline. Therefore it is encouraged to use this encoder when recording using the commandline. However no persistent file or container is created.

JsonEncoder (recommended)

Identifier:

MORR.Core.Data.Transcoding.Json.JsonEncoder

This encoder requires additional configuration entries. Configuration example:

"MORR.Core.Data.Transcoding.Json.JsonDecoderConfiguration": {
  "RelativeFilePath": "event_data.json"
}

MpegEncoder (recommended)

Identifier:

MORR.Core.Data.Transcoding.Mpeg.MpegEncoder

This encoder requires additional configuration entries. Configuration example:

"MORR.Core.Data.Transcoding.Mpeg.MpegEncoderConfiguration": {
  "Width": 1920,
  "Height": 1080,
  "KiloBitsPerSecond": 4000,
  "FramesPerSecond": 60,
  "RelativeFilePath": "desktop_capture.mp4"
}

Decoder (optional)

Decoders are not necessary for normal operation, but may be used for new processing procedures by developers in the future.

Decoder

Available decoders:

JsonDecoder

Identifier:

MORR.Core.Data.Transcoding.Json.JsonDecoder

This encoder requires additional configuration entries. Configuration example:

"MORR.Core.Data.Transcoding.Json.JsonDecoderConfiguration": {
  "RelativeFilePath": "event_data.json"
}

CommandLineInterface

The CLI can be used as an alternative to the graphical UI. It is mainly targeted at developers for debug and testing purposes.

You can start the CLI by doing the following steps:

  1. Open cmd.exe
  2. Navigate to the application folder: ~ cd <YOUR_PATH>
  3. Execute CLI: ~ CLI

Help

CLI help

Using this command the application will show you the list of all available commands and a help text for each.

Version

CLI version

Using this command the application will show you the current version of the application.

Validate

The validate command is used to validate the configuration file which is used for a recording or processing session.

CLI validate [-c|--config] [-v|--verbose]
Options

-c|--config (required): Defines the location of the configuration file, which should be validated.

-v|--verbose (optional): Enables verbose output of the application.

Example
CLI validate -c config.morr -v

This will validate the configuration file located at /config.morr and run using verbose output.

Record

The record command is used to start a recording session with a given configuration.

CLI record [-c|--config] [-v|--verbose]
Options

-c|--config (required): Defines the location of the configuration file, which should be used for the recording session.

-v|--verbose (optional): Enables verbose output of the application.

Example
CLI record -c config.morr -v

This will start a recording session with the given configuration file located at /config.morr and using verbose output.

Process

This command is currently not functional as no decoder is available. The process command is used to start a processing session with a given configuration and input file.

CLI process [-c|--config] [-i|--inputFile]  [-v|--verbose]
Options

-c|--config (required): Defines the location of the configuration file, which should be used for the recording session.

-i|--inputFile (required): Defines the location of the input container or file in which metadata from a previous recording is located.

-v|--verbose (optional): Enables verbose output of the application.

Example
CLI process -c config.morr -i recording.mp4 -v

This will start a processing session with the given configuration file located at ./config.morr, using the input mp4 file located at /recording.mp4 and using verbose output.

Browser Extension

Loading as temporary extension

To test the extension before it's packed and distributed via chrome webstore and addons.mozilla, you can load the unpacked extension as temporary extension in the respective browser.

Mozilla Firefox

To load the unpacked extension in Firefox, navigate to about:debugging, and, if applicable, click on This Firefox (might not be necessary depending on your version). Then, choose the option Load Temporary Add-on, and then choose any file from the folder containing the webextension (e.g. the manifest.json). The folder containing the webextension is usually called ./dist or ./debug after building. The extension is now loaded. To allow the extension to connect to the MORR main application, the communication port has to be set, see below.

Google Chrome

To load the unpacked extension in Google Chrome, navigate to chrome://extensions and activate Developer mode (top right corner). Next, click on Load unpacked and choose the folder containing the webextension, usually called ./dist or ./debug after building (the whole folder, not a file inside it). The extension is now loaded. To allow the extension to connect to the MORR main application, the communication port has to be set, see below.

Setting the communication port

In order for the browser extension to be able to communicate with the MORR main application, a port (and optionally a directory) have to be set in the browser extension's options/preferences. In chrome those can be accessed on chrome://extensions -> Details -> Extension Options, or by right-clicking on the MORR extension icon next to the address bar and choosing Options. In Mozilla Firefox, navigate to about:addons instead and choose Preferences next to the MORR extension. Examples for valid port settings are 60024 and 60024/johndoe.

Note: The equivalent value has to also be set in the config.morr as UrlSuffix, see the example configuration at the beginning of this document. This UrlSuffix has to end with a slash '/' character.