diff options
author | Vincent Ambo <tazjin@google.com> | 2020-04-04T01·24+0100 |
---|---|---|
committer | Vincent Ambo <tazjin@google.com> | 2020-04-04T01·36+0100 |
commit | bcfa11599d211ddeb4c5d12198b90dd444e10921 (patch) | |
tree | 6dafc52e3d31433a37aeb15619e6827ab47bd55a /fun/tvl | |
parent | f8703d12dafc42f632759b5b18b5b2fd00cd203a (diff) |
feat(fun/tvl): Implement hardware-accelerated stream rescaling r/613
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.
Diffstat (limited to 'fun/tvl')
-rw-r--r-- | fun/tvl/default.nix | 18 | ||||
-rw-r--r-- | fun/tvl/stream.sh | 14 |
2 files changed, 18 insertions, 14 deletions
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 |