New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Nvidia linux. Add encoder nvenc #906
Conversation
On Arch, all of the cuda tools are in /opt/cuda/bin & lib64 and cannot be found when bundling ffmpeg. Can someone verify if that's also the case for other distros. |
A symbolic link from /opt/cuda to /usr/local/cuda seems to work |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All comments are pretty minor, the PR seems good overall
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nitpicks and grammar, I'll commit some fixes then hopefully merge.
…oop for wait to push frame to if stat with continue stat.
…vidia libs requires. Only for developers.
Rebased from master to fix merge conflict so CI runs. |
This should be in the Ubuntu repos, but alas...
I see you have added |
For fedora we don’t have a package, need to install from nvidia site. This don’t use right now, I put here as example the file, which will require for smooth dev process |
Fine for me then. |
Added NVenc encoder for Linux.
The current solution is to implement a loop to get the Vulkan frame and copy that through the CPU to the GPU again.
Current latency in my case is in the range of 5-10ms for encoding. But that is already playable quality and latency.
I introduce a new flag
--no-nvidia
to build in dev mode for people with Intel/AMD cards, which is not required to install Nvidia libs to their machines. The flag should pass together with--bundle-ffmpeg
like examplecargo xtask build-server --bundle-ffmpeg --no-nvidia
. But if you will link to the existing FFmpeg on your machine it's don't need to provide at all, it's only like a modification flag for--bundle-ffmpeg
.For devs with Arch need to create a symbolic link from
/opt/cuda
to/usr/local/cuda
because current scripts are prepared to be built in CI for the final release.CEncdoder is a change from waiting for an answer to skipping to sending the current frame because nvenc is required more than one frame to encode. And PushFrame returns try_again error till the next frames what it created infinity loop of waiting.
AppImage with nvenc included
ALVR-x86_64.zip