482f734a54
This is implemented as a trait so that it can be swapped out for a mock version in integration tests that does not require a full restart. |
||
---|---|---|
fxrecorder | ||
fxrunner | ||
integration-tests | ||
libfxrecord | ||
.gitignore | ||
CODE_OF_CONDUCT.md | ||
Cargo.lock | ||
Cargo.toml | ||
README.md | ||
fxrecord.example.toml |
README.md
fxrecord
fxrecord
is a tool for capturing and analyzing recordings of Firefox
desktop startup. It consists of two parts: fxrecorder
, which records the
output of the reference hardware and does analysis, and fxrunner
, which
instruments Firefox on the reference hardware.
License
fxrecord
is released under the terms of the Mozilla Public License 2.0.
Code of Conduct
This repository follows a code of conduct.
Requirements
Both fxrunner
and fxrecorder
require Rust 1.39+ for async/await support.
The only supported operating system for fxrunner
is Windows 10. It is a
statically linked executable with no other dependencies.
fxrecorder
is also a statically linked executable, but it has two
additional requirements:
- a capture device compatible with ffmpeg (I am using an AverMedia Gc551); and
- ffmpeg version 4.2 or newer.
fxrecorder
presently requires a Windows 10 device as it assumes that
DirectShow will be used for video capture. The capture card used while
developing fxrecord
only supported Windows 10 and therefore was not able to
be tested against any other operating system.
Building
fxrecord
is built in Rust and uses Cargo. To build for production
use, run
cargo +beta build --release
and the binaries will be located in the target/release/
subdirectory. Copy
the fxrunner
binary to the reference device and the fxrecorder
to the
recording device.
Configuration
fxrunner
requires a configuration file named fxrecord.toml with
[fxrunner]
and [fxrecorder.recording]
sections:
[fxrecorder]
# The host and port that FxRunner is listening on.
host = "127.0.0.1:8888"
[fxrecorder.recording]
# The path to ffmpeg on the file system.
ffmpeg_path = "C:\ffmpeg\ffmepg.exe"
# The size of the video stream.
video_size = { y = 1920, x = 1080 }
# The desired size. If omitted, video_size will be used instead.
output_size = { y = 1366, x = 768 }
# The frame rate to capture at.
frame_rate = 60
# The name of the device to use for capture.
device = "AVerMedia GC551 Video Capture"
# The size of the buffer to use while streaming frames.
buffer_size = "1000M"
fxrunner
requires a configuration file named fxrecord.toml
with a
[fxrunner]
section:
[fxrunner]
# The host and port that FxRecorder will be able to connect to.
host = "0.0.0.0:8888"
An example configuration is provided.