From bcfa11599d211ddeb4c5d12198b90dd444e10921 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Sat, 4 Apr 2020 02:24:28 +0100 Subject: feat(fun/tvl): Implement hardware-accelerated stream rescaling By randomly copy & pasting options that are impenetrable to mere mortals from NVIDIA's developer blog and a bunch of gists scattered throughout the internet, Andi and I managed to "get this to work". The idea is that the x11grab stream should be resized into 720p (which is the maximum supported by Google Meet), but with hardware acceleration. --- fun/tvl/default.nix | 18 ++++++++++++++++++ fun/tvl/stream.sh | 14 -------------- 2 files changed, 18 insertions(+), 14 deletions(-) create mode 100644 fun/tvl/default.nix delete mode 100644 fun/tvl/stream.sh diff --git a/fun/tvl/default.nix b/fun/tvl/default.nix new file mode 100644 index 000000000000..6dc5fa89a0c7 --- /dev/null +++ b/fun/tvl/default.nix @@ -0,0 +1,18 @@ +{ depot, ... }: + +depot.third_party.writeShellScriptBin "start-tvl-stream" '' + env LD_LIBRARY_PATH=/run/opengl-driver/lib/ ${depot.third_party.ffmpeg}/bin/ffmpeg \ + -vsync 0 \ + -hwaccel cuvid \ + -init_hw_device cuda=0 -filter_hw_device 0 \ + -f x11grab \ + -video_size 1920x1080 \ + -framerate 30 \ + -i :0.0+0,0 \ + -filter:v "format=nv12,hwupload,scale_npp=w=1280:h=720:interp_algo=lanczos" \ + -c:v h264_nvenc \ + -preset:v llhq \ + -rc:v cbr_ld_hq \ + -an \ + -f flv rtmp://tazj.in:1935/tvl +'' diff --git a/fun/tvl/stream.sh b/fun/tvl/stream.sh deleted file mode 100644 index 99030ab7698b..000000000000 --- a/fun/tvl/stream.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env bash - -env LD_LIBRARY_PATH=/run/opengl-driver/lib/ ffmpeg \ - -vsync 0 \ - -hwaccel cuvid \ - -f x11grab \ - -video_size 1920x1080 \ - -framerate 60 \ - -i :0.0+0,0 \ - -vf "scale_npp=1280:720" \ - -c:v h264_nvenc \ - -preset fast \ - -an \ - -f flv rtmp://tazj.in:1935/tvl -- cgit 1.4.1