-
Notifications
You must be signed in to change notification settings - Fork 1
Usage Guide
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.
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"
To open the menu, rightclick the trayicon. The menu allows you to
- Start/Stop a recording
- Open the recordings directory
- Quit the application
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.
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
--
{
"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.
--
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.
--
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.
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"
}
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"
}
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:
- Open
cmd.exe
- Navigate to the application folder:
~ cd <YOUR_PATH>
- Execute CLI:
~ CLI
CLI help
Using this command the application will show you the list of all available commands and a help text for each.
CLI version
Using this command the application will show you the current version of the application.
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]
-c|--config
(required): Defines the location of the configuration file, which should be validated.
-v|--verbose
(optional): Enables verbose output of the application.
CLI validate -c config.morr -v
This will validate the configuration file located at /config.morr
and run using verbose output.
The record command is used to start a recording session with a given configuration.
CLI record [-c|--config] [-v|--verbose]
-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.
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.
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]
-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.
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.
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.
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.
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.
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.