Commit Graph

277 Commits

Author SHA1 Message Date
dec05eba
de72b93b0d Better amd/intel quality tuning 2023-04-08 02:03:50 +02:00
dec05eba
75ed160122 Implement kms vaapi capture 2023-04-07 05:31:46 +02:00
dec05eba
10d7bf93e8 Cleanup replay packets after use 2023-04-03 10:45:00 +02:00
dec05eba
711379899b Fix -k description 2023-04-02 15:36:59 +02:00
dec05eba
cc63bffaf7 Dont initialize vaapi on nvidia (fixes crash on startup) 2023-04-01 23:24:12 +02:00
Steam Deck User
c720d38978 Rename drm to vaapi 2023-04-01 19:05:56 +02:00
Steam Deck User
29237c7116 Cleanup xcomposite_drm 2023-04-01 19:01:20 +02:00
Steam Deck User
2f67083915 Use vaapi to do rgb->yuv420p color conversion
Enable window capture for amd/intel.
Properly check if h264/hevc is supported on amd/intel before using
codec.
2023-04-01 16:29:24 +02:00
dec05eba
162eac8c2f Xsync after overclock (and reset), dont set colorspace data 2023-04-01 13:48:59 +02:00
dec05eba
8c6e526318 Make sure region size for focused window is divisable by 2 2023-03-31 04:37:44 +02:00
dec05eba
82e3720084 Install coolbits if using nvidia, add preserve video memory install script 2023-03-31 01:11:12 +02:00
dec05eba
f57b641d6d Better usage formatting 2023-03-27 23:36:27 +02:00
dec05eba
bd925e0beb Add code for variable framerate 2023-03-26 20:54:08 +02:00
dec05eba
d92ecea69e Remove yuv444 for now 2023-03-26 19:04:51 +02:00
dec05eba
5d80bd886c Move video encoding to separate thread, remove pixel_format that doesn't do anything and was bugged 2023-03-26 19:04:51 +02:00
dec05eba
716cb5b448 Add pixfmt yuv420p/yuv444p option to set lossless color 2023-03-26 19:04:51 +02:00
dec05eba
f3c24b3c8b Remove unused and invalid flags 2023-03-26 19:04:51 +02:00
dec05eba
d4b8833fdd Remove unused code 2023-03-26 19:04:51 +02:00
dec05eba
8592a46929 Do not automatically install coolbits because if used on amd/intel then xorg wont boot 2023-03-24 02:00:38 +01:00
dec05eba
78398f9bdd Add error message if using wayland (without xwayland) or xwayland 2023-03-21 22:28:52 +01:00
dec05eba
5107d24541 Update readme 2023-03-17 18:32:24 +01:00
dec05eba
93cb6593a6 Add overclocking option -oc to workaround a NVIDIA driver bug (forcefully set to p2 state when using cuda) 2023-03-17 17:17:14 +01:00
Steam Deck User
8cbdb596eb vaapi wip 2023-03-17 11:44:51 +01:00
dec05eba
689419a782 Fix for ffmpeg 6 (nvenc hevc doesn't support b frames) 2023-03-10 10:16:09 +01:00
dec05eba
8ca1ac70e8 Support opus flt and fltp 2023-03-04 16:02:48 +01:00
dec05eba
c956cd4be3 dd 2023-03-04 15:42:53 +01:00
dec05eba
7a4ab93dc3 exp 2023-03-04 15:32:32 +01:00
dec05eba
06311eac36 Enable experimental support to make sure opus/flac works on older ffmpeg versions 2023-03-04 14:59:55 +01:00
dec05eba
4ff9a47b3d Improve usage doc for -ac 2023-03-04 13:08:31 +01:00
dec05eba
3413f193c1 Add opus/flac audio options (only supported my mp4/mkv) 2023-03-04 12:57:30 +01:00
dec05eba
74a5fb9dfb Add screen-direct-force option for VRR monitor 2023-03-04 11:19:31 +01:00
dec05eba
fdcdfd2b35 Fix broken video because of broken audio, most noticably in replay 2023-02-22 09:45:06 +01:00
dec05eba
e9b4f66e37 Fix follow focused for the first window and when switching from/to invalid window 2023-02-19 15:56:44 +01:00
dec05eba
1d8d95fba4 Add option to merge audio devices by separating audio inputs with | in one -a 2023-02-16 23:40:21 +01:00
dec05eba
a17e8a1a77 Fix crash on error: dont do av_buffer_unref on frame contex because device_ctx frees it as well 2023-01-18 13:26:25 +01:00
dec05eba
bf6fbea736 Add info about audio names to readme file 2023-01-07 00:43:19 +01:00
dec05eba
5948233a0f mm 2023-01-01 19:16:18 +01:00
dec05eba
fcb8f24754 Merge code fix 2022-12-20 15:53:02 +01:00
dec05eba
8d30a205b1 Make -c optional, select container format from file extension by default 2022-12-20 15:43:46 +01:00
dec05eba
bcd8117c76 Better audio/video sync, disable broken screen-direct again (nvidia driver bug) 2022-12-20 15:42:27 +01:00
dec05eba
3aa4f3e9f5 Re-enable screen-direct, disable h264 forced fallback and use p6 again 2022-12-20 15:42:25 +01:00
dec05eba
9d0d02ff6f Attempt to reduce stuttering of video 2022-12-20 15:41:24 +01:00
dec05eba
4e6fc174fe follow focused 2022-12-20 15:32:42 +01:00
dec05eba
6a6bb703bc wip intel 2022-11-30 19:36:33 +01:00
dec05eba
a7e0dbd833 Refactor xcomposite into abstract capture api
Refactor c++ files into c files, more usable
2022-10-16 04:15:09 +02:00
dec05eba
93d46b9767 Refactor nvfbc into abstract capture api 2022-10-14 01:22:43 +02:00
dec05eba
2a788b5533 Use medium instead of p4 and slow instead of p7 for old ffmpeg 2022-10-12 14:24:13 +02:00
dec05eba
dc20d1eddb Do not use p4, p7 with old ffmpeg that doesn't have those options yet 2022-10-12 04:53:56 +02:00
dec05eba
9d185f3091 Use p4 preset on older gpus (kepler family) because of performance
with p7
2022-10-11 19:47:28 +02:00
dec05eba
1ca4dcfbdb Tune quality again, remove vbr 2022-10-11 02:47:17 +02:00
dec05eba
1a4e0aff72 Better tune quality options for different resolutions 2022-10-08 10:13:59 +02:00
dec05eba
88d06478d3 Fix crash caused by invalid memory write when recording audio
In some scenarios memcpy can write to 8 bytes (or more?) over the buffer
end.

Thanks to Guilherme for reporting the issue and testing the fix.
2022-10-07 03:44:54 +02:00
dec05eba
92f4b1a6f1 Fix copy paste mistake possible crash (using av_opt_set instead of av_dict_set)
Thanks @guihkx
2022-10-06 21:54:44 +02:00
dec05eba
ea8254e115 Fix possible pulseaudio crash? 2022-10-05 12:47:34 +02:00
dec05eba
e8b16e8347 Live stream: set gop to fps*2, bit rate for medium to lower value 2022-10-04 02:44:46 +02:00
dec05eba
f55b713437 Temporary disable screen-direct recording as it causes stuttering (nvfbc bug?) 2022-10-04 02:23:40 +02:00
dec05eba
e80d7676d4 Livestream: add silent audio track if not audio input is provided (fixes youtube and other sites) 2022-10-04 01:32:27 +02:00
dec05eba
c354d88583 Add medium and high quality, better livestreaming options, fix global header (especially for streaming) 2022-10-04 00:09:53 +02:00
dec05eba
4cd391e07e Add info about flatpak package, default to h264 (unless resolution is greater than 3840x2160) and add -k option to set codec 2022-10-03 16:56:58 +02:00
dec05eba
9ff0bb199b Revert gop size 2022-10-03 01:55:39 +02:00
dec05eba
0ec31db6c6 Do not set keyint min 2022-10-02 23:08:07 +02:00
dec05eba
6885d1a30e Sacrifice seek speed for reduced file size 2022-10-02 22:19:54 +02:00
dec05eba
b99652ee28 Make the audio input description the input name by default 2022-10-02 01:18:12 +02:00
dec05eba
5871abc42f Allow giving audio inputs names by prefixing them with <name>/ 2022-10-02 01:04:57 +02:00
dec05eba
a1f7fedcb8 Add unique index to each audio input device name 2022-10-02 00:40:49 +02:00
dec05eba
f7606a144b Give error when using an invalid audio input with pipewire 2022-09-30 22:02:23 +02:00
dec05eba
09ad7a1eb5 Give each audio input a seperate node by giving them an unique context name 2022-09-30 21:14:12 +02:00
dec05eba
912515303b Remove allowing only 1 process of gpu-screen-recorder at a time 2022-09-30 16:24:34 +02:00
dec05eba
6e407b0b62 Use better name for quality options to clearify that medium is actually very high quality, because people dont understand that 2022-09-29 17:34:32 +02:00
dec05eba
1db2282683 Remove dependency on glew and glfw, move external files to external directory 2022-09-28 01:03:06 +02:00
dec05eba
4fead183fe Load cuda at runtime. Include cuda header files inside the project 2022-09-26 01:26:45 +02:00
dec05eba
0059724fdc Read audio data from pulseaudio as it's available and buffer it. Fixes audio recording on pulseaudio (and some pipewire configs) 2022-09-22 01:44:45 +02:00
dec05eba
5ba4c05953 Fix build for older version of ffmpeg (linux mint 20.3 for example) 2022-09-21 19:12:28 +02:00
dec05eba
f8237ca5ae Fix build on older ffmpeg (17+ months old), see ffmpeg commit ef6a9e5e311f09fa8032974fa4d0c1e166a959bb 2022-09-21 05:47:37 +02:00
dec05eba
f810161203 Is this the final solution to the audio crackling problem? increase pts by number of samples and add dummy audio frames between 2022-09-20 20:11:56 +02:00
dec05eba
a668cac2bb Do not allocate cuda buffer when using nvfbc 2022-09-20 13:10:05 +02:00
dec05eba
2b7729efb9 Fix build on ubuntu, use a mainloop with timeout instead of sleep 2022-09-20 11:01:34 +02:00
dec05eba
919890b7b2 Fix replay video/audio desync, fix dummy audio when dropping audio input, give each audio stream a new name so it can be replaced with pipewire graphs 2022-09-20 03:39:15 +02:00
dec05eba
9f2ddf3802 Fix build on some distros? 2022-09-19 23:31:21 +02:00
dec05eba
85cd5a9d11 Move scripts to script dir, add youtube-hls-stream script, fix twitch stream script 2022-09-19 16:19:41 +02:00
dec05eba
59b730a806 GNOME: fix recording windows with client-side decorations by recording the compositor window and tracking the window 2022-09-18 18:51:37 +02:00
dec05eba
9f2f4240ba Attempt to fix video/audio desync when video pts gets desynced with clock 2022-09-17 16:10:51 +02:00
dec05eba
49c876ca00 Make compatbie with old ass ubuntu 2022-09-12 21:14:48 +02:00
dec05eba
948d285f82 Fix build for old ffmpeg (ubuntu, pop os lts) 2022-09-11 22:38:44 +02:00
dec05eba
4917c0406c Fix crackling audio with pipewire and only add empty audio packets until the first packet arrives 2022-09-06 14:40:34 +02:00
dec05eba
6ea59acb9e Make video framerate constant, fix audio desync a bit when no audio playing for a while 2022-09-02 00:42:22 +02:00
dec05eba
cd69b7813b Add option to use multiple audio inputs (each in their own audio track) 2022-08-23 17:39:49 +02:00
dec05eba
16237d589a Fix audio recording with pipewire and with different pulseaudio system settings (frag) 2022-08-06 09:56:39 +02:00
dec05eba
a10a96e032 Revert "Revert "Use expose instead of visibility event""
This reverts commit 71149bba01.
2022-07-29 08:00:40 +02:00
dec05eba
71149bba01 Revert "Use expose instead of visibility event"
This reverts commit be69d51f25.
2022-07-25 05:20:52 +02:00
dec05eba
be69d51f25 Use expose instead of visibility event 2022-07-18 00:13:14 +02:00
dec05eba
db4944cd08 Check if visibility really change on event change 2022-07-17 23:46:47 +02:00
dec05eba
2ccfcfd794 Fix nvfbc recording at 3440 width (set linesize to width * 4)
Thanks to Hans Gaiser for debugging and fixing it!
2022-07-06 10:58:00 +02:00
dec05eba
c8b9542f0d Do not allow recording area right now when recording screen/monitor 2022-07-06 09:25:20 +02:00
dec05eba
8b87654f1c Remove fps limit 2022-05-15 01:45:22 +02:00
dec05eba
b3fa6afd56 Update README with info about nvfbc being slower 2022-04-26 17:03:08 +02:00
dec05eba
32c3807fe1 Show correct original fps in mediainfo 2022-04-09 04:23:41 +02:00
dec05eba
066cfae84c Improve quality, especially when using h264. Force disable h264 for now because quality is not as good 2022-04-07 14:04:34 +02:00
dec05eba
94af0aeec4 Reduce bitrate. It was way too high 2022-04-06 01:47:42 +02:00
dec05eba
ed15405d2f p5 for high 2022-04-05 16:33:39 +02:00
dec05eba
6a01677e23 Remove unecessary cuda memcpy when using nvfbc 2022-04-05 04:06:47 +02:00
dec05eba
c43fa5e4ee Better detection of window destroyed 2022-03-31 01:53:39 +02:00
dec05eba
e49d30048f Close screenrecorder when target window is closed 2022-03-31 01:50:06 +02:00
dec05eba
7228d36647 Create pid file to detect if gpu-screen-recorder is already running and only allow one instance to run at once 2022-03-31 01:24:27 +02:00
dec05eba
5a4d8ce21b Attempt to fix audio/video desync and fps mayhem when
using screen-direct recording
2022-03-28 05:15:18 +02:00
dec05eba
5ca83d45cf Remove direct capture sound hack (fixes audio on fedora) 2022-03-25 13:41:28 +01:00
dec05eba
8117c92ee5 Fix replay crash when not recording audio 2022-03-25 03:33:01 +01:00
dec05eba
a99f010603 Redesign replay to save to file and continue on SIGUSR1 2022-03-25 03:25:36 +01:00
dec05eba
5415f56140 Attempt to fix audio in replay mode in screen-direct 2022-03-24 19:11:23 +01:00
dec05eba
e7de2006e6 Fix replay if no audio stream 2022-03-24 19:04:48 +01:00
dec05eba
d231d93891 Fix fullscreen window forcefully getting unfullscreened on i3 and bspwm 2022-03-24 09:59:04 +01:00
dec05eba
2423e50d44 Add screen-direct option for direct NvFBC 2022-03-24 00:38:35 +01:00
dec05eba
efc15622a9 Attempt to fix audio timestamp being totally wrong on fedora 2022-03-23 19:24:12 +01:00
dec05eba
c595c7ffb5 Add more info about gnome issue in stderr 2022-03-23 17:02:30 +01:00
dec05eba
36fd4516db Add -s option to set record area size, fix workspace switch freezing recording on bspwm, make background black after resize 2022-03-22 23:08:39 +01:00
dec05eba
821cacf9ff Attempt 2 at fixing black screen under dwm/i3 after resize 2022-03-22 17:53:53 +01:00
dec05eba
af2a211767 Fix resize to fullscreen black video 2022-03-22 15:57:29 +01:00
dec05eba
ff8fa9f0f7 Record black screen instead of crash when compositor + window is not supported at the moment 2022-03-22 13:33:02 +01:00
dec05eba
f81bdfb29e Use /usr/lib64 instead of /usr/lib, which makes it compatible with gentoo 2022-03-22 00:29:20 +01:00
dec05eba
97e0a6ad1b Do not add audio track if not recording audio 2022-02-26 01:43:43 +01:00
dec05eba
35d2cc64fa Fix code after avcodec->codec was deprecated 2022-02-25 04:16:46 +01:00
dec05eba
a6e0e16f57 Change format 2021-10-11 18:33:39 +02:00
dec05eba
bbfe02f72b Use interleaved write 2021-09-07 17:55:39 +02:00
dec05eba
04d229caf3 Use direct capture when possible 2021-07-29 06:45:55 +02:00
dec05eba
1f71584a77 only use hevc when recording the entire screen 2021-07-23 18:22:57 +02:00
dec05eba
4617e2c45a Add option to record a display or all displays. This requires nvfbc 2021-07-23 17:33:37 +02:00
dec05eba
7b39bd81c0 Fix first frame being black 2021-07-19 06:06:06 +02:00
dec05eba
a7259c6ff5 Add medium quality and set quality to medium by default 2020-09-01 01:35:33 +02:00
dec05eba
5537ebad6d Add medium quality 2020-08-31 23:22:14 +02:00
dec05eba
c94ce44dbe Fix black video when resizing to smaller window size 2020-08-31 06:49:25 +02:00
dec05eba
c622d2d799 Revert select code. Causes laggy video for some reason 2020-08-31 04:19:11 +02:00
dec05eba
5f84ad1c76 Attempt to reduce frame skip 2020-08-31 03:11:01 +02:00
dec05eba
534c9fd299 Change qmin and qmax again. They are too low 2020-08-31 02:56:42 +02:00
dec05eba
008f119f4c Use select on x11 display instead of sleeping and use xdamage again 2020-08-31 01:21:11 +02:00
dec05eba
e80bab33ca Use rgb instead of rgba to save memory 2020-08-30 22:54:24 +02:00
dec05eba
9ff163feb9 Disable unused mipmap 2020-08-30 22:26:31 +02:00
dec05eba
fabeb1707f Go all out on quality.. 2020-08-30 06:17:38 +02:00
dec05eba
6fadab748d Set ideal qmax value 2020-08-30 05:22:52 +02:00
dec05eba
d8550f9183 Higher quality for 'high' 2020-08-30 05:15:56 +02:00
dec05eba
b193f6fee4 Add -q quality flag. Set to high by default. Valid values: high, ultra 2020-08-30 05:04:10 +02:00
dec05eba
d69aded7fa Slightly improve performance by only swapping buffer on redraw 2020-08-30 04:06:49 +02:00
dec05eba
0780efe87d Vastly improve quality by using qmin and qmax (uses higher bitrate) 2020-08-29 04:02:34 +02:00
dec05eba
c1f5d7ee4d Add nvidia-like instant replay option 2020-08-28 05:06:10 +02:00
dec05eba
b2fc88336a Make audio optional in usage string 2020-08-27 23:15:52 +02:00
dec05eba
78ab032cf5 Make audio recording optional 2020-08-26 02:54:05 +02:00
dec05eba
bf9df281d2 Fix screen recording for certain windows (such as termite) 2020-07-05 07:49:13 +02:00
dec05eba
6343c5a76b Smoother? 2020-07-05 07:05:39 +02:00
dec05eba
ef3767d750 Improve video quality 2020-07-03 02:36:38 +02:00
dec05eba
5bfbdec58f Change quality, otherwise twitch craps itself 2020-07-03 01:57:33 +02:00
dec05eba
ed52692324 Use ctrl+c instead of closing window to stop recording 2020-07-01 23:53:06 +02:00