在 WINDOWS 中使用 gstreamer 进行桌面 GPU 编码

Posted

技术标签:

【中文标题】在 WINDOWS 中使用 gstreamer 进行桌面 GPU 编码【英文标题】:Desktop GPU encoding using gstreamer in WINDOWS 【发布时间】:2018-11-02 09:36:17 【问题描述】:

我在 Nvidia Jetson Tx2 上开发了 gstreamer GPU 编码。但现在我是 尝试使用 gstreamer 进行桌面 Nvidia GPU 编码。

我无法在列出的受支持元素中使用“omxh264enc” “gst-inspect-1.0.exe”。

所以,我想使用 Gstreamer 在*桌面 GPU* 上进行硬件编码。

请指导我正确的方向,或任何示例命令行或程序 对于桌面 gpu 支持的编码。 注意:我正在尝试使用笔记本电脑 gpu + Visual Studio 2015

问候, 阿迪

【问题讨论】:

【参考方案1】:

取决于您的 GPU 硬件。至少有 NVIDIA 的 nvenc 和 Intel 的 msdk。可能您必须自己构建这些元素,因为它们需要 GStreamer 无法重新分发的来自第三方供应商的专有库。 PC上没有omx,主要用于嵌入式设备。

【讨论】:

感谢 florian 对“omx”的澄清......我已经开发了使用 x264enc 的 gstreamer API 代码,我想在 gstreamer 中用 nvenc(ffmpeg 有 h264_nvenc)替换它......所以如何构建Windows 上 gstreamer 的 nvenc 元素。你能指导我一些文档或链接吗?有关如何将 nvenc 或 cuda 编码器与 gstreamer 一起使用的更多信息。 您需要开始阅读 gstreamer 文档,了解如何自己构建插件。 @ Florian Zwoch,我已经使用 mingw 构建了 gstreamer src 代码,如 gstreamer 站点所述,但无法构建 gst-libav-1.0 并将其配置为 nvenc .. 没有 gst-libav- 1.0 包我能够生成.exe ....请提出任何解决方案.. 更多详细信息在下面的链接***.com/questions/50753745/… 你不需要 libav 插件。事实上,一个人不会使用硬件编码。 Gstreamer 的bad 插件集合中有一个专用的nvenc 插件。你想建造那个。这同样适用于msdk 插件。它是bad 存储库中的一个独立插件(我认为)。 是的,目前我能够生成两个可执行文件(gstreamer-1.0.exe 和 gstreamer-1.0-devel-1.15.0.1.exe)但是当我使用 nvenc 构建 gst-plugins-bad 时,nvdec和 cuda configure.log 配置:*** 检查功能:NVIDIA 编码 API *** 配置:警告:找不到库 nvidia-encode 配置:*** 这些插件将不会被构建:nvenc 问题:现在我可以检测 cuda & nvdec 但不检测 nvenc 。 nvenc 正在寻找 nvidia-encode.dll 但在 nvidia video sdk 8.2 中,缺少 nvidia-encode.dll 但它作为 nvidia-encode.so 存在于 Linux 文件夹中。

以上是关于在 WINDOWS 中使用 gstreamer 进行桌面 GPU 编码的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 上使用 gstreamer 播放 .wav 音频文件?

用于 Windows 的 python gstreamer

Gstreamer Video Overlay 在 QWidget 上的无效投射,Windows 10

使用 GstDiscoverer (GStreamer) 的分段错误

Raspberry Pi 上的 GStreamer 全高清视频 RTP 流

GStreamer使用详解