4f52550351
`fxrecorder` now starts a recording session via its `Recorder` and requests `fxrunner` to start Firefox. After a delay, Firefox is shut down and the recording stops. Recorder and Splash mocks are also added for integration tests, but as of yet they do nothing. |
||
---|---|---|
fakefox | ||
fxrecorder | ||
fxrunner | ||
integration-tests | ||
libfxrecord | ||
libfxrecord_macros | ||
test | ||
.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.
fxrunner
The only supported operating system for fxrunner
is Windows 10. It is a
statically linked executable with no other dependencies. Additionally, it
requires legacy IO counters to be enabled. This can be done by running the
following once:
diskperf -Y
fxrecorder
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.