man-pages/man1/wf-recorder.1.html
2021-03-31 01:06:50 +01:00

466 lines
6.8 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML><HEAD><TITLE>Man page of WF-RECORDER</TITLE>
</HEAD><BODY>
<H1>WF-RECORDER</H1>
Section: User Commands (1)<BR><A HREF="#index">Index</A>
<A HREF="/cgi-bin/man/man2html">Return to Main Contents</A><HR>
<BR>BSD mandoc<BR>
<A NAME="lbAB">&nbsp;</A>
<H2>NAME</H2>
<B>wf-recorder</B>
- simple screen recording program for wlroots-based compositors
<A NAME="lbAC">&nbsp;</A>
<H2>SYNOPSIS</H2>
<B>wf-recorder</B>
[-<B>abcdDefghlmoptvx</B>
]
[-<B>a , -audio </B>[<I>DEVICE</I>
]
]
[-<B>b, -bframes </B><I>max_b_frames</I>
]
[-<B>c, -codec </B><I>output_codec</I>
]
[-<B>d, -device </B><I>encoding_device</I>
]
[-<B>D, -no-damage</B>
]
[-<B>e, -opencl </B>[<I>opencl_device</I>
]
]
[-<B>f </B><I>filename.ext</I>
]
[-<B>g, -geometry </B><I>geometry</I>
]
[-<B>h, -help</B>
]
[-<B>l, -log</B>
]
[-<B>m, -muxer </B><I>muxer</I>
]
[-<B>o, -output </B><I>output</I>
]
[-<B>p, -codec-param </B>[<I>option_param=option_value</I>
]
]
[-<B>t, -force-yuv</B>
]
[-<B>v, -version</B>
]
[-<B>x, -pixel-format</B>
]
<A NAME="lbAD">&nbsp;</A>
<H2>DESCRIPTION</H2>
<B>wf-recorder</B>
is a tool built to record your screen on Wayland compositors.
It makes use of
<B>wlr-screencopy</B>
for capturing video and
<A HREF="/cgi-bin/man/man2html?1+ffmpeg">ffmpeg</A>(1)
for encoding it.
<P>
In its simplest form, run
<B>wf-recorder</B>
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
<I>codec.</I>
<P>
The options are as follows:
<P>
<DL COMPACT>
<P>
<DT id="1"><B>-a , -audio </B>[<I>DEVICE</I>
]
<DD>
Starts recording the screen with audio.
<P>
<I>DEVICE</I>
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
<P>
<DT id="2"><B>-b , -bframes </B><I>max_b_frames</I>
<DD>
Sets the maximum number of B-Frames to use.
<P>
<DT id="3"><B>-c , -codec</B>
<DD>
<I>output_codec</I>
Specifies the codec of the video. Supports GIF output as well.
<P>
To modify codec parameters, use
-<B>p</B>
<I>option_name=option_value</I>
<P>
<DT id="4"><B>-d , -device </B><I>encoding_device</I>
<DD>
Selects the device to use when encoding the video.
<P>
Some drivers report support for
`rgb0'
data for vaapi input but really only support yuv.
Use the
-<B>t , -force-yuv</B>
option in addition to the vaapi options to convert the
data in software, before sending it to the GPU.
<P>
<DT id="5"><B>-D , -no-damage</B>
<DD>
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.
<P>
<DT id="6"><B>-e , -opencl </B><I>opencl_device</I>
<DD>
Attempts to use OpenCL if
<B>wf-recorder</B>
was built with OpenCL support and
-<B>t , -force-yuv</B>
are specified, even without vaapi GPU encoding.
Use
-<B>e , -opencl</B>
<I>opencl_device</I>
to use a specific OpenCL device, where
<I>opencl_device</I>
is one of the devices listed.
<P>
<DT id="7"><B>-f </B><I>filename.ext</I>
<DD>
By using the
-<B>f</B>
option, the output file will have the name
<I>filename.ext</I>
and the file format will be determined by the provided extension.
If the extension is not recognized by your
<A HREF="/cgi-bin/man/man2html?1+ffmpeg">ffmpeg</A>(1)
muxers, the command will fail.
<P>
You can check the muxers that your
<A HREF="/cgi-bin/man/man2html?1+ffmpeg">ffmpeg</A>(1)
installation supports by running
<BLOCKQUOTE><TT>$ ffmpeg -muxers</TT></BLOCKQUOTE>
<P>
<DT id="8"><B>-g , -geometry </B><I>screen_geometry</I>
<DD>
Selects a specific part of the screen.
<P>
<DT id="9"><B>-h , -help</B>
<DD>
Prints the help screen.
<P>
<DT id="10"><B>-l , -log</B>
<DD>
Generates a log on the current terminal. For debug purposes.
<P>
<DT id="11"><B>-m , -muxer </B><I>muxer</I>
<DD>
Set the output format to a specific muxer instead of detecting it from the filename.
<P>
<DT id="12"><B>-o , -output</B>
<DD>
Specify the output where the video is to be recorded.
<P>
<DT id="13"><B>-p , -codec-param </B>[<I>option_name=option_value</I>
]
<DD>
Change the codec parameters.
<P>
<DT id="14"><B>-t , -force-yuv</B>
<DD>
Use this option in addition to the vaapi options to convert
the data in software, before sending it to the GPU.
<P>
<DT id="15"><B>-v , -version</B>
<DD>
Print the version of wf-recorder.
<P>
<DT id="16"><B>-x , -pixel-format </B><I>pixel_format</I>
<DD>
Set the output pixel format.
<P>
List available formats using
<BLOCKQUOTE><TT>$ ffmpeg -pix_fmts</TT></BLOCKQUOTE>
</DL>
<P>
<A NAME="lbAE">&nbsp;</A>
<H2>EXAMPLES</H2>
To select a specific part of the screen you can either use
-<B>-g </B><I>geometry</I>
or
use <A HREF="https://github.com/emersion/slurp">https://github.com/emersion/slurp</A> for interactive selection of the
screen area that will be recorded:
<BLOCKQUOTE><TT>$ wf-recorder -g &quot;$(slurp)&quot;</TT></BLOCKQUOTE>
<P>
You can record screen and sound simultaneously with
<BLOCKQUOTE><TT>$ wf-recorder --audio --file=recording_with_audio.mp4</TT></BLOCKQUOTE>
<P>
To specify a
<I>codec</I>
use the
-<B>c </B><I>codec</I>
option. To modify codec parameters,
-<B>p</B>
<I>option_name=option_value.</I>
<P>
To set a specific output format, use the
-<B>m muxer</B>
option. For example, to
output to a v
<B>ideo4linux2</B>
loopback you might use:
<BLOCKQUOTE><TT>$ wf-recorder --muxer=v4l2 --codec=rawvideo --file=/dev/video2</TT></BLOCKQUOTE>
<P>
To use GPU encoding, use a VAAPI codec (for ex.
`h264_vaapi'
) and specify a GPU
device to use with the
-<B>d</B>
option:
<BLOCKQUOTE><TT>$ wf-recorder -f test-vaapi.mkv -c h264_vaapi -d /dev/dri/renderD128</TT></BLOCKQUOTE>
<P>
Some drivers report support for
`rgb0'
data for
`vaapi'
input but really only support yuv planar formats.
In this case, use the
-<B>t , -force-yuv</B>
option in addition to the
`vaapi'
options to convert the data to yuv planar data before sending it to the GPU.
<A NAME="lbAF">&nbsp;</A>
<H2>SEE ALSO</H2>
<A HREF="/cgi-bin/man/man2html?1+ffmpeg">ffmpeg</A>(1),
<A HREF="/cgi-bin/man/man2html?1+pactl">pactl</A>(1)
<P>
<HR>
<A NAME="index">&nbsp;</A><H2>Index</H2>
<DL>
<DT id="17"><A HREF="#lbAB">NAME</A><DD>
<DT id="18"><A HREF="#lbAC">SYNOPSIS</A><DD>
<DT id="19"><A HREF="#lbAD">DESCRIPTION</A><DD>
<DT id="20"><A HREF="#lbAE">EXAMPLES</A><DD>
<DT id="21"><A HREF="#lbAF">SEE ALSO</A><DD>
</DL>
<HR>
This document was created by
<A HREF="/cgi-bin/man/man2html">man2html</A>,
using the manual pages.<BR>
Time: 00:05:29 GMT, March 31, 2021
</BODY>
</HTML>