Record screen with audio (loopback) using FFmpeg
Chris Noxz
October 15, 2023
Recording your screen with audio, including loopback audio, can
be a valuable skill for creating tutorials, capturing gameplay, or
archiving video conferences. This guide will show you how to use
FFmpeg to record your screen along with loopback audio with ALSA as
backend.
Steps
- Load `snd-aloop` Module:
-
To enable loopback audio recording, you need to load the
snd-aloop module with a single PCM substream. Use the
following command (use sudo if you don’t have
doas installed):
doas modprobe snd-aloop pcm_substreams=1
- Edit the ALSA Configuration File:
-
To direct audio output to the loopback device and record it,
edit your ALSA configuration file. This step involves creating or
appending to /etc/asound.conf . This will temporarily
disable audio output. Execute the following command:
echo 'pcm.!default { type plug slave.pcm "hw:Loopback,0,0" }' >> /etc/asound.conf
If you wish to record audio from an application while also
routing the audio to an output device, you can find alternative
configurations on the FFmpeg Wiki.
- Start Recordning:
-
Now, you can start the actual screen recording. In this example,
we’ll record a 1280x1080 portion of the screen starting from
coordinates 0,0 using the ALSA audio hardware ’Loopback,1,0’. You
can adjust the resolution and other parameters as needed.
ffmpeg -video_size 1280x1080 -framerate 25 -f x11grab -i :0.0+0,0 -f alsa -ac 2 -ar 44100 -i hw:Loopback,1,0 output.mkv
-
-video_size : Sets the video size to 1280x1080
pixels.
-framerate : Specifies the frame rate (25 frames per
second in this example).
-f x11grab : Uses the x11grab input format for
screen capture.
-i :0.0+0,0 : Specifies the screen area to capture
(0,0 starting from the top-left corner).
-f alsa : Sets the audio input format to ALSA.
-ac 2 : Configures 2 audio channels.
-ar 44100 : Sets the audio sample rate to 44.1
kHz.
-i hw:Loopback,1,0 : Specifies the loopback audio
input.
output.mkv : Defines the output file name (you can
use any desired format).
- To stop the recording, simply press
Ctrl+C in the
terminal where you started FFmpeg.
- Once you’ve finished your recording, remove or comment out the
line added to
/etc/asound.conf in step 2. This will
re-enable audio output on your system.
Now you can record your screen with loopback audio using FFmpeg.
This can be especially useful for various content creation and
screen capture needs.
|