WF-RECORDER(1)

NAME
wf-recorder - simple screen recording program for wlroots-based compositors

SYNOPSIS
wf-recorder [-abcdDefghlmoptvx] [-a, --audio [DEVICE]] [-b, --bframes max_b_frames] [-c, --codec output_codec] [-d, --device encoding_device] [-D, --no-damage] [-f filename.ext] [-F filter_string] [-g, --geometry geometry] [-h, --help] [-l, --log] [-m, --muxer muxer] [-o, --output output] [-p, --codec-param [option_param=option_value]] [-t, --force-yuv] [-v, --version] [-x, --pixel-format]

DESCRIPTION
wf-recorder is a tool built to record your screen on Wayland compositors. It makes use of wlr-screencopy for capturing video and ffmpeg(1) for encoding it.

In its simplest form, run wf-recorder to start recording and use ‘Ctrl+C’ to stop. This will create a file called ‘recording.mp4’ in the current working directory using the default codec.

The options are as follows:

-a, --audio [DEVICE]
    Starts recording the screen with audio.

    DEVICE argument is optional. In case you want to specify the PulseAudio device which will capture the audio, you can run this command with the name of that device. You can find your device by running
        $ pactl list sources | grep Name

-b, --bframes max_b_frames
    Sets the maximum number of B-Frames to use.

-c, --codec
    output_codec Specifies the codec of the video. Supports GIF output as well.

    To modify codec parameters, use -p option_name=option_value

-d, --device encoding_device
    Selects the device to use when encoding the video.

    Some drivers report support for ‘rgb0’ data for vaapi input but really only support yuv. Use the -t, --force-yuv option in addition to the vaapi options to convert the data in software, before sending it to the GPU.

-D, --no-damage
    By default, wf-recorder will request a new frame from the compositor only when the screen updates. This results in a much smaller output file, which however has a variable refresh rate. When this option is on, wf-recorder does not use this optimization and continuously records new frames, even if there are no updates on the screen.

-f filename.ext
    By using the -f option, the output file will have the name filename.ext and the file format will be determined by the provided extension. If the extension is not recognized by your ffmpeg(1) muxers, the command will fail.

    You can check the muxers that your ffmpeg(1) installation supports by running
        $ ffmpeg -muxers

-F, --filter filter_string
    Set the ffmpeg filter to use. VAAPI requires `hwupload,scale_vaapi=nv12` to work.

-g, --geometry screen_geometry
    Selects a specific part of the screen. The format is "x,y WxH".

-h, --help
    Prints the help screen.

-l, --log
    Generates a log on the current terminal. For debug purposes.

-m, --muxer muxer
    Set the output format to a specific muxer instead of detecting it from the filename.

-o, --output
    Specify the output where the video is to be recorded.

-p, --codec-param [option_name=option_value]
    Change the codec parameters.

-t, --force-yuv
    Use this option in addition to the vaapi options to convert the data in software, before sending it to the GPU.

-v, --version
    Print the version of wf-recorder.

-x, --pixel-format pixel_format
    Set the output pixel format.

    List available formats using
        $ ffmpeg -pix_fmts

EXAMPLES
To select a specific part of the screen you can either use --g geometry or use https://github.com/emersion/slurp for interactive selection of the screen area that will be recorded:
    $ wf-recorder -g $(slurp)

You can record screen and sound simultaneously with
    $ wf-recorder --audio --file=recording_with_audio.mp4

To specify a codec use the -c codec option. To modify codec parameters, -p option_name=option_value.

To set a specific output format, use the -m -muxer option. For example, to output to a v ideo4linux2 loopback you might use:
    $ wf-recorder --muxer=v4l2 --codec=rawvideo --file=/dev/video2

To use GPU encoding, use a VAAPI codec (for ex. ‘h264_vaapi’ ) and specify a GPU device to use with the -d option:
    $ wf-recorder -f test-vaapi.mkv -c h264_vaapi -d /dev/dri/renderD128

Some drivers report support for ‘rgb0’ data for ‘vaapi’ input but really only support yuv planar formats. In this case, use the -t, --force-yuv option in addition to the ‘vaapi’ options to convert the data to yuv planar data before sending it to the GPU.

SEE ALSO
ffmpeg(1), pactl(1)