Comments (16)
AV1 encoders will come soon to NVIDIA and Intel. AV1 should be possible to be used as a decoding codec for major web browsers. This should be available to GStreamer soon and confirmed it is in the works.
from selkies-gstreamer.
#42 implements vaapih264enc
. However, for Intel GPUs this is only limited to LIBVA_DRIVER_NAME=i965
, which means that the iHD
driver is unable to be used. Moreover, performance with ximagesrc
is very low with Xorg on Intel GPUs somehow.
vah264enc
is going to come in GStreamer 1.21 or 1.22. This is a more modern implementation, and vaapih264enc
will get frozen. Investigate this when it comes.
AMD's AMF API and Intel's Media Foundation API may also deliver better performance. Therefore, this issue is not being closed and more contribution is needed.
Note: https://blogs.igalia.com/vjaquez/2018/03/28/gstreamer-va-api-troubleshooting/
Relevant code: https://github.com/selkies-project/selkies-gstreamer/blob/master/src/selkies_gstreamer/gstwebrtc_app.py
Anyone with GStreamer experience, or willing to learn can solve this.
Supporting GPU statistics is also needed. GPUtils only supports NVIDIA.
from selkies-gstreamer.
Relevant:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1489
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1494
from selkies-gstreamer.
More discussions are going on related to the VAAPI plugin in #42.
from selkies-gstreamer.
Does selkies-gstreamer
support AV1
codec for now?
from selkies-gstreamer.
Thanks to austriangam3r:
got the amd hardware acceleration working with the newest gstreamer version, the segfaults happen when some property of the data channel is accessed in newer gstreamer versions
Change this in gstwebrtc_app.py and the segfaults disappear
from selkies-gstreamer.
Does selkies-gstreamer support AV1 codec for now?
@maxpain Depends on the web browser. I'm trying to make updates.
from selkies-gstreamer.
@ehfd Chrome supports WebRTC AV1 encoder starting from v90 beta
from selkies-gstreamer.
We need this. https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1489
AV1 support tends to be meaningless without support from NVIDIA.
from selkies-gstreamer.
vah264enc
is added in commit 736292c as well as the upgrade to GStreamer 1.22.
The msdk
plugins for Intel GPUs and amf
plugins for AMD GPUs may provide additional improvements.
https://gstreamer.freedesktop.org/documentation/msdk/msdkh264enc.html
https://gstreamer.freedesktop.org/documentation/msdk/msdkh265enc.html
https://gstreamer.freedesktop.org/documentation/msdk/msdkav1enc.html
https://gstreamer.freedesktop.org/documentation/msdk/msdkvp9enc.html
https://gstreamer.freedesktop.org/documentation/amfcodec/amfh264enc.html
https://gstreamer.freedesktop.org/documentation/amfcodec/amfh265enc.html
from selkies-gstreamer.
The above addition is NOT tested, thus everyone is encouraged to feedback.
from selkies-gstreamer.
subprojects/gst-plugins-bad/sys/amfcodec/meson.build:53:4: ERROR: Problem encountered: amf plugin supports only Windows
AMD users on Linux are stuck with va
until the Vulkan backend is implemented to GStreamer.
from selkies-gstreamer.
-
Support of
qsv
andopenh264
(at least from GStreamer) is open for contribution (GStreamer build pipeline is already ready, just the addition of the GST-Python pipelines).
qsv
provides an Intel-specific plugin for video encoding, and is an equivalent better reimplementation ofmsdk
.
I myself will be procrastinating the above for now because the equivalent functional counterpartva
(PLEASE TEST IF YOU HAVE AN INTEL OR AMD GPU) is available, and some waiting time is important for making sure the new release is without bugs. -
openh264
has a relaxed license compared tox264
and would be appealing to corporations who do not want GPL programs in the pipeline. -
Moreover, it is required to investigate the usage of
video/x-raw(memory:VAMemory)
invah264enc
just like howvideo/x-raw(memory:GLMemory)
orvideo/x-raw(memory:CUDAMemory)
is used in NVIDIA GPUs. -
Support new NVENC elements over the legacy
nvh264enc
encoder: https://discourse.gstreamer.org/t/nvcodec-nvenc-nvidia-deprecates-support-for-old-videocodec-sdk-h-264-hevc-encoder-presets-with-driver-r550-in-q124/182/5 -
Since H.265 is not supported by a bulk of web browsers in WebRTC (note: things are changing, look below),
nvav1enc
is also open for prioritized contribution.
This is an example of how you are supposed to contribute (just the src/selkies_gstreamer/gstwebrtc_app.py
):
736292c#diff-0f90616a6ae1fe3eafe009fbdcc1de77f509f538eb735d2262f277a078f10e3d
I will implement these after 6-12 months if there are no contributions.
Anything other than these will be done after GStreamer 1.24 is out.
from selkies-gstreamer.
https://webrtc.googlesource.com/src/+/972f28335a7f989ee1ffccb7c64fda1f29e09747
H.265 coming to Chromium?
And an apparent solution to the packetization issue in Apple.
from selkies-gstreamer.
Note to self regarding x264enc - option added to the pipeline:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3034
from selkies-gstreamer.
Encoder settings: https://github.com/LizardByte/Sunshine/blob/29a1b1539fb2e0e82d02e521954b163c6d9d55d1/src/video.cpp#L568-L994
from selkies-gstreamer.
Related Issues (20)
- Various issues related to clipboard relaying HOT 18
- Issue with touchpad: cursor does not respond when one keyboard button is continued to be held HOT 3
- Support remote controlling retro console devices HOT 10
- Support Selkies Joystick Interposer in 32-bit (especially Wine), support manual installation in addition to DEB HOT 2
- Long hold ESC to exit full screen in the web interface does not work in certain cases and many key combinations leak to the client OS HOT 10
- [META] Rewrite gst-web HTML5 interface frontend HOT 5
- Audio randomly gets disabled after latest changes to webrtcbin HOT 12
- Various Resize/DPI improvements with the user interface and the cursor HOT 7
- Support extended stylus or touch gestures HOT 1
- x264 encoder failing to initialize HOT 3
- Add option to manually specify XAuthority files for login greeters HOT 3
- Audio does not play on "START" button press HOT 5
- Python app crashes when pressing any key in a non-English layout HOT 7
- Reduce reliance on external libraries / certain upstream packages are unmaintained HOT 21
- cursor size should be set from screen DPI HOT 20
- gst launcher and some features HOT 11
- Add instructions to use uinput for bare metal/Docker instances, not just GKE or Kubernetes HOT 2
- Gstreamer pipeline is not starting HOT 14
- Scale relative mouse movement which becomes slower or faster than normal depending on client and host resolution
- Scrolling is too fast on touchpads HOT 23
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from selkies-gstreamer.