Install systemd service in install script, skip empty audio device
Stop systemd service with SIGINT
This commit is contained in:
parent
3ae89c8d7c
commit
bae4504370
10
README.md
10
README.md
@ -101,13 +101,11 @@ Run the script `scripts/start-replay.sh` to start replay and then `scripts/save-
|
|||||||
You can use these scripts to start replay at system startup if you add `scripts/start-replay.sh` to startup (this can be done differently depending on your desktop environment / window manager) and then go into
|
You can use these scripts to start replay at system startup if you add `scripts/start-replay.sh` to startup (this can be done differently depending on your desktop environment / window manager) and then go into
|
||||||
hotkey settings on your system and choose a hotkey to run the script `scripts/save-replay.sh`. Modify `scripts/start-replay.sh` if you want to use other replay options.
|
hotkey settings on your system and choose a hotkey to run the script `scripts/save-replay.sh`. Modify `scripts/start-replay.sh` if you want to use other replay options.
|
||||||
## Run replay on system startup
|
## Run replay on system startup
|
||||||
If you are running a distro that uses systemd then you can use the systemd service in `extra/gpu-screen-recorder.service`.
|
If you are running a distro that uses systemd then the `install.sh` script installs `extra/gpu-screen-recorder.service` on the system and that systemd service can be started with `systemctl enable --now --user gpu-screen-recorder`
|
||||||
Copy `extra/gpu-screen-recorder.service` to a location where systemd can find it, for example: `$HOME/.config/systemd/user` and then enable and start it with: `systemctl enable --now --user gpu-screen-recorder`. Copying the systemd service file is not needed if you installed GPU Screen Recorder from AUR as this is done automatically.
|
and it's configured with `$HOME/.config/gpu-screen-recorder.env` (create it if it doesn't exist).
|
||||||
You can then use the `scripts/save-replay.sh` script to save a replay. The systemd service is configured with the file `$HOME/.config/gpu-screen-recorder.env` (create it if it doesn't exist).
|
You can see which variables that you can use in the `gpu-screen-recorder.env` file by looking at the `extra/gpu-screen-recorder.service` file. In general you only need to set the `WINDOW` variable to a monitor to make it work.
|
||||||
You can see which variables that you can use by looking at the gpu-screen-recorder.service file. In general you only need to set the `WINDOW` variable to make it work.
|
You can use the `scripts/save-replay.sh` script to save a replay and by default the systemd service saves files in `$HOME/Videos`.\
|
||||||
Restart the systemd service after modifying that configuration file. By default it saves videos in `$HOME/Videos`.\
|
|
||||||
If you are using a NVIDIA GPU then it's recommended to set PreserveVideoMemoryAllocations=1 as mentioned in the section below.
|
If you are using a NVIDIA GPU then it's recommended to set PreserveVideoMemoryAllocations=1 as mentioned in the section below.
|
||||||
|
|
||||||
## Issues
|
## Issues
|
||||||
### NVIDIA
|
### NVIDIA
|
||||||
Nvidia drivers have an issue where CUDA breaks if CUDA is running when suspend/hibernation happens, and it remains broken until you reload the nvidia driver. To fix this, either disable suspend or tell the NVIDIA driver to preserve video memory on suspend/hibernate by using the `NVreg_PreserveVideoMemoryAllocations=1` option. You can run `sudo extra/install_preserve_video_memory.sh` to automatically add that option to your system.
|
Nvidia drivers have an issue where CUDA breaks if CUDA is running when suspend/hibernation happens, and it remains broken until you reload the nvidia driver. To fix this, either disable suspend or tell the NVIDIA driver to preserve video memory on suspend/hibernate by using the `NVreg_PreserveVideoMemoryAllocations=1` option. You can run `sudo extra/install_preserve_video_memory.sh` to automatically add that option to your system.
|
||||||
|
6
TODO
6
TODO
@ -93,3 +93,9 @@ Preset is set to p5 for now but it should ideally be p6 or p7.
|
|||||||
|
|
||||||
For low latency, see https://developer.download.nvidia.com/compute/nvenc/v4.0/NVENC_VideoEncoder_API_ProgGuide.pdf (section 7.1).
|
For low latency, see https://developer.download.nvidia.com/compute/nvenc/v4.0/NVENC_VideoEncoder_API_ProgGuide.pdf (section 7.1).
|
||||||
Remove follow focused option.
|
Remove follow focused option.
|
||||||
|
|
||||||
|
Fix kms capture on 10-bit setup (both x11 and wayland). It may already work automatically on amd/intel, but on nvidia the color conversion shader needs to be used to automatically map 10-bit to 8-bit.
|
||||||
|
|
||||||
|
Test vaapi av1 encoding (av1_vaapi) (which was recently added to ffmpeg master).
|
||||||
|
|
||||||
|
Overclocking (-oc) can overclock too much on some systems. Maybe remove the option?
|
@ -14,6 +14,7 @@ Environment=REPLAYDURATION=60
|
|||||||
Environment=OUTPUTDIR=%h/Videos
|
Environment=OUTPUTDIR=%h/Videos
|
||||||
Environment=MAKEFOLDERS=no
|
Environment=MAKEFOLDERS=no
|
||||||
ExecStart=/bin/sh -c 'AUDIO="${AUDIO_DEVICE:-$(pactl get-default-sink).monitor}"; gpu-screen-recorder -v no -w $WINDOW -c $CONTAINER -q $QUALITY -k $CODEC -ac $AUDIO_CODEC -a "$AUDIO" -f $FRAMERATE -r $REPLAYDURATION -o "$OUTPUTDIR" -mk $MAKEFOLDERS $ADDITIONAL_ARGS'
|
ExecStart=/bin/sh -c 'AUDIO="${AUDIO_DEVICE:-$(pactl get-default-sink).monitor}"; gpu-screen-recorder -v no -w $WINDOW -c $CONTAINER -q $QUALITY -k $CODEC -ac $AUDIO_CODEC -a "$AUDIO" -f $FRAMERATE -r $REPLAYDURATION -o "$OUTPUTDIR" -mk $MAKEFOLDERS $ADDITIONAL_ARGS'
|
||||||
|
KillSignal=SIGINT
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=5s
|
RestartSec=5s
|
||||||
|
|
||||||
|
@ -11,6 +11,9 @@ strip gpu-screen-recorder
|
|||||||
|
|
||||||
install -Dm755 "gsr-kms-server" "/usr/bin/gsr-kms-server"
|
install -Dm755 "gsr-kms-server" "/usr/bin/gsr-kms-server"
|
||||||
install -Dm755 "gpu-screen-recorder" "/usr/bin/gpu-screen-recorder"
|
install -Dm755 "gpu-screen-recorder" "/usr/bin/gpu-screen-recorder"
|
||||||
|
if [ -d "/usr/lib/systemd/user" ]; then
|
||||||
|
install -Dm644 "extra/gpu-screen-recorder.service" "/usr/lib/systemd/user/gpu-screen-recorder.service"
|
||||||
|
fi
|
||||||
setcap cap_sys_admin+ep /usr/bin/gsr-kms-server
|
setcap cap_sys_admin+ep /usr/bin/gsr-kms-server
|
||||||
setcap cap_sys_nice+ep /usr/bin/gpu-screen-recorder
|
setcap cap_sys_nice+ep /usr/bin/gpu-screen-recorder
|
||||||
|
|
||||||
|
@ -1308,6 +1308,9 @@ int main(int argc, char **argv) {
|
|||||||
// Pipewire instead DEFAULTS TO THE DEFAULT AUDIO INPUT. THAT'S RETARDED.
|
// Pipewire instead DEFAULTS TO THE DEFAULT AUDIO INPUT. THAT'S RETARDED.
|
||||||
// OH, YOU MISSPELLED THE AUDIO INPUT? FUCK YOU
|
// OH, YOU MISSPELLED THE AUDIO INPUT? FUCK YOU
|
||||||
for(const char *audio_input : audio_input_arg.values) {
|
for(const char *audio_input : audio_input_arg.values) {
|
||||||
|
if(!audio_input || audio_input[0] == '\0')
|
||||||
|
continue;
|
||||||
|
|
||||||
requested_audio_inputs.push_back({parse_audio_input_arg(audio_input)});
|
requested_audio_inputs.push_back({parse_audio_input_arg(audio_input)});
|
||||||
for(AudioInput &request_audio_input : requested_audio_inputs.back().audio_inputs) {
|
for(AudioInput &request_audio_input : requested_audio_inputs.back().audio_inputs) {
|
||||||
bool match = false;
|
bool match = false;
|
||||||
|
@ -4,5 +4,6 @@
|
|||||||
|
|
||||||
rm -f "/usr/bin/gsr-kms-server"
|
rm -f "/usr/bin/gsr-kms-server"
|
||||||
rm -f "/usr/bin/gpu-screen-recorder"
|
rm -f "/usr/bin/gpu-screen-recorder"
|
||||||
|
rm -f "/usr/lib/systemd/user/gpu-screen-recorder.service"
|
||||||
|
|
||||||
echo "Successfully uninstalled gpu-screen-recorder"
|
echo "Successfully uninstalled gpu-screen-recorder"
|
Loading…
Reference in New Issue
Block a user