aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/interactive.sh17
-rwxr-xr-xscripts/list-sinks.sh3
-rwxr-xr-xscripts/record-application-name.sh6
-rwxr-xr-xscripts/record-save-application-name.sh14
-rwxr-xr-xscripts/replay-application-name.sh6
-rwxr-xr-xscripts/replay.sh6
-rwxr-xr-xscripts/save-recording.sh3
-rwxr-xr-xscripts/save-replay.sh3
-rwxr-xr-xscripts/start-replay.sh5
-rwxr-xr-xscripts/stop-replay.sh3
-rwxr-xr-xscripts/toggle-recording-selected.sh9
-rwxr-xr-xscripts/twitch-stream-local-copy.sh7
-rwxr-xr-xscripts/twitch-stream.sh5
-rwxr-xr-xscripts/youtube-hls-stream.sh11
14 files changed, 98 insertions, 0 deletions
diff --git a/scripts/interactive.sh b/scripts/interactive.sh
new file mode 100755
index 0000000..63b0eae
--- /dev/null
+++ b/scripts/interactive.sh
@@ -0,0 +1,17 @@
+#!/bin/sh -e
+
+selected_audio_input="$(pactl get-default-sink).monitor"
+
+echo "Select a window to record"
+window_id=$(xdotool selectwindow)
+
+echo -n "Enter video fps: "
+read fps
+
+echo -n "Enter output file name: "
+read output_file_name
+
+output_dir=$(dirname "$output_file_name")
+mkdir -p "$output_dir"
+
+gpu-screen-recorder -w "$window_id" -c mp4 -f "$fps" -a "$selected_audio_input" -o "$output_file_name"
diff --git a/scripts/list-sinks.sh b/scripts/list-sinks.sh
new file mode 100755
index 0000000..e5fc44f
--- /dev/null
+++ b/scripts/list-sinks.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pactl list | grep -E '(Description: Monitor of)|(Monitor Source: )'
diff --git a/scripts/record-application-name.sh b/scripts/record-application-name.sh
new file mode 100755
index 0000000..0411781
--- /dev/null
+++ b/scripts/record-application-name.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+window=$(xdotool selectwindow)
+window_name=$(xdotool getwindowclassname "$window" || xdotool getwindowname "$window" || echo "game")
+window_name="$(echo "$window_name" | tr '/\\' '_')"
+gpu-screen-recorder -w "$window" -f 60 -a "$(pactl get-default-sink).monitor" -o "$HOME/Videos/recording/$window_name/$(date +"Video_%Y-%m-%d_%H-%M-%S.mp4")"
diff --git a/scripts/record-save-application-name.sh b/scripts/record-save-application-name.sh
new file mode 100755
index 0000000..c002376
--- /dev/null
+++ b/scripts/record-save-application-name.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+# This script should be passed to gpu-screen-recorder with the -sc option, for example:
+# gpu-screen-recorder -w screen -f 60 -a "$(pactl get-default-sink).monitor" -r 60 -sc scripts/record-save-application-name.sh -c mp4 -o "$HOME/Videos"
+
+window=$(xdotool getwindowfocus)
+window_name=$(xdotool getwindowclassname "$window" || xdotool getwindowname "$window" || echo "game")
+window_name="$(echo "$window_name" | tr '/\\' '_')"
+
+video_dir="$HOME/Videos/Replays/$window_name"
+mkdir -p "$video_dir"
+video="$video_dir/$(date +"${window_name}_%Y-%m-%d_%H-%M-%S.mp4")"
+mv "$1" "$video"
+sleep 0.5 && notify-send -t 2000 -u low "GPU Screen Recorder" "Replay saved to $video" \ No newline at end of file
diff --git a/scripts/replay-application-name.sh b/scripts/replay-application-name.sh
new file mode 100755
index 0000000..7683abb
--- /dev/null
+++ b/scripts/replay-application-name.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+window=$(xdotool selectwindow)
+window_name=$(xdotool getwindowclassname "$window" || xdotool getwindowname "$window" || echo "game")
+window_name="$(echo "$window_name" | tr '/\\' '_')"
+gpu-screen-recorder -w "$window" -f 60 -c mkv -a "$(pactl get-default-sink).monitor" -r 60 -o "$HOME/Videos/Replays/$window_name"
diff --git a/scripts/replay.sh b/scripts/replay.sh
new file mode 100755
index 0000000..2781e1e
--- /dev/null
+++ b/scripts/replay.sh
@@ -0,0 +1,6 @@
+#!/bin/sh -e
+
+[ "$#" -ne 4 ] && echo "usage: replay.sh <window_id> <fps> <replay_time_sec> <output_directory>" && exit 1
+active_sink="$(pactl get-default-sink).monitor"
+mkdir -p "$4"
+gpu-screen-recorder -w "$1" -c mkv -f "$2" -a "$active_sink" -r "$3" -o "$4"
diff --git a/scripts/save-recording.sh b/scripts/save-recording.sh
new file mode 100755
index 0000000..90fefc1
--- /dev/null
+++ b/scripts/save-recording.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+killall -SIGINT gpu-screen-recorder && sleep 0.5 && notify-send -t 1500 -u low "GPU Screen Recorder" "Recording saved"
diff --git a/scripts/save-replay.sh b/scripts/save-replay.sh
new file mode 100755
index 0000000..f9390aa
--- /dev/null
+++ b/scripts/save-replay.sh
@@ -0,0 +1,3 @@
+#!/bin/sh -e
+
+killall -SIGUSR1 gpu-screen-recorder && sleep 0.5 && notify-send -t 1500 -u low -- "GPU Screen Recorder" "Replay saved"
diff --git a/scripts/start-replay.sh b/scripts/start-replay.sh
new file mode 100755
index 0000000..e36d59d
--- /dev/null
+++ b/scripts/start-replay.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+video_path="$HOME/Videos"
+mkdir -p "$video_path"
+gpu-screen-recorder -w screen -f 60 -a "$(pactl get-default-sink).monitor" -c mkv -r 30 -o "$video_path"
diff --git a/scripts/stop-replay.sh b/scripts/stop-replay.sh
new file mode 100755
index 0000000..d38da9c
--- /dev/null
+++ b/scripts/stop-replay.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+killall -SIGINT gpu-screen-recorder
diff --git a/scripts/toggle-recording-selected.sh b/scripts/toggle-recording-selected.sh
new file mode 100755
index 0000000..309e4d1
--- /dev/null
+++ b/scripts/toggle-recording-selected.sh
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+killall -SIGINT gpu-screen-recorder && sleep 0.5 && notify-send -t 1500 -u low 'GPU Screen Recorder' 'Stopped recording' && exit 0;
+window=$(xdotool selectwindow)
+active_sink="$(pactl get-default-sink).monitor"
+mkdir -p "$HOME/Videos"
+video="$HOME/Videos/$(date +"Video_%Y-%m-%d_%H-%M-%S.mp4")"
+notify-send -t 1500 -u low 'GPU Screen Recorder' "Started recording video to $video"
+gpu-screen-recorder -w "$window" -c mp4 -f 60 -a "$active_sink" -o "$video"
diff --git a/scripts/twitch-stream-local-copy.sh b/scripts/twitch-stream-local-copy.sh
new file mode 100755
index 0000000..dba9d15
--- /dev/null
+++ b/scripts/twitch-stream-local-copy.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Stream on twitch while also saving the video to disk locally
+
+[ "$#" -ne 4 ] && echo "usage: twitch-stream-local-copy.sh <window_id> <fps> <livestream_key> <local_file>" && exit 1
+active_sink="$(pactl get-default-sink).monitor"
+gpu-screen-recorder -w "$1" -c flv -f "$2" -a "$active_sink" | tee -- "$4" | ffmpeg -i pipe:0 -c copy -f flv -- "rtmp://live.twitch.tv/app/$3"
diff --git a/scripts/twitch-stream.sh b/scripts/twitch-stream.sh
new file mode 100755
index 0000000..cd4737a
--- /dev/null
+++ b/scripts/twitch-stream.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+[ "$#" -ne 3 ] && echo "usage: twitch-stream.sh <window_id> <fps> <livestream_key>" && exit 1
+active_sink="$(pactl get-default-sink).monitor"
+gpu-screen-recorder -w "$1" -c flv -f "$2" -a "$active_sink" -o "rtmp://live.twitch.tv/app/$3"
diff --git a/scripts/youtube-hls-stream.sh b/scripts/youtube-hls-stream.sh
new file mode 100755
index 0000000..21619af
--- /dev/null
+++ b/scripts/youtube-hls-stream.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+[ "$#" -ne 3 ] && echo "usage: youtube-hls-stream.sh <window_id> <fps> <livestream_key>" && exit 1
+mkdir "youtube_stream"
+cd "youtube_stream"
+active_sink="$(pactl get-default-sink).monitor"
+gpu-screen-recorder -w "$1" -c mpegts -f "$2" -a "$active_sink" | ffmpeg -i pipe:0 -c copy -f hls \
+ -hls_time 2 -hls_flags independent_segments -hls_flags delete_segments -hls_segment_type mpegts -hls_segment_filename stream%02d.ts -master_pl_name stream.m3u8 out1 &
+echo "Waiting until stream segments are created..."
+sleep 10
+ffmpeg -i stream.m3u8 -c copy -- "https://a.upload.youtube.com/http_upload_hls?cid=$3&copy=0&file=stream.m3u8"