107 lines
2.7 KiB
Nix
107 lines
2.7 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
|
|
# Lassulus streaming setup
|
|
# -------------------------
|
|
# ffmpeg \
|
|
# -f pulse \
|
|
# -i default \
|
|
# -vaapi_device /dev/dri/renderD128 \
|
|
# -f x11grab \
|
|
# -video_size 1366x768 \
|
|
# -i :0 \
|
|
# -vf 'hwupload,scale_vaapi=format=nv12' \
|
|
# -c:v h264_vaapi \
|
|
# -c:a aac \
|
|
# -b:a 96k \
|
|
# -af "highpass=f=200, lowpass=f=3000" \
|
|
# -qp 30 \
|
|
# -f flv \
|
|
# rtmp://lassul.us:1935/stream/nixos \
|
|
# ./rc3-output-$(date +%d%H%M%S).mp4
|
|
#
|
|
# Dann abspielen mit :
|
|
# mpv rtmp://lassul.us:1935/stream/nixos
|
|
|
|
cfg = config.programs.custom.video;
|
|
|
|
# show keyboard input on desktop for screencasts
|
|
screenKey = pkgs.symlinkJoin {
|
|
name = "screen-keys";
|
|
paths =
|
|
let
|
|
screenKeyScript = { position ? "bottom", size ? "small", ... }:
|
|
pkgs.writeShellScriptBin "screenkeys-${position}-${size}" # sh
|
|
''
|
|
${pkgs.screenkey}/bin/screenkey \
|
|
--no-detach \
|
|
--bg-color '#fdf6e3' \
|
|
--font-color '#073642' \
|
|
-p ${position} \
|
|
-s ${size} \
|
|
"$@"
|
|
'';
|
|
in
|
|
lib.flatten (lib.flip map [ "large" "small" "medium" ] (size:
|
|
lib.flip map [ "top" "center" "bottom" ]
|
|
(position: screenKeyScript { inherit size position; })));
|
|
};
|
|
|
|
|
|
mpvReview =
|
|
let
|
|
moveToDir = key: dir: pkgs.writeText "move-with-${key}.lua" ''
|
|
tmp_dir = "${dir}"
|
|
|
|
function move_current_track_${key}()
|
|
track = mp.get_property("path")
|
|
os.execute("mkdir -p '" .. tmp_dir .. "'")
|
|
os.execute("mv '" .. track .. "' '" .. tmp_dir .. "'")
|
|
print("moved '" .. track .. "' to " .. tmp_dir)
|
|
end
|
|
|
|
mp.add_key_binding("${key}", "move_current_track_${key}", move_current_track_${key})
|
|
'';
|
|
delete = moveToDir "D" "./.graveyard";
|
|
good = moveToDir "G" "./.good";
|
|
in
|
|
pkgs.writers.writeDashBin "mpv-review" ''
|
|
exec ${pkgs.mpv}/bin/mpv --no-config --script=${delete} --script=${good} "$@"
|
|
'';
|
|
|
|
|
|
in
|
|
{
|
|
|
|
options.programs.custom.video.enable = mkEnableOption "enable video tools";
|
|
|
|
config = mkIf cfg.enable {
|
|
environment.systemPackages = with pkgs; [
|
|
unstable.youtube-dl
|
|
unstable.yt-dlp
|
|
mplayer
|
|
mpv
|
|
mpvReview
|
|
|
|
|
|
# to record your screen
|
|
# ---------------------
|
|
simplescreenrecorder
|
|
screenKey
|
|
|
|
# to transcode video material
|
|
# ---------------------------
|
|
handbrake
|
|
ffmpeg-full
|
|
|
|
# video editing
|
|
# -------------
|
|
openshot-qt
|
|
|
|
];
|
|
};
|
|
}
|
|
|