在 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 音频文件?
Gstreamer Video Overlay 在 QWidget 上的无效投射,Windows 10
使用 GstDiscoverer (GStreamer) 的分段错误