问题标签 [vaapi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
27333 浏览

encoding - 你如何让 FFMPEG 用 vaapi 进行编码?

我见过各种使用 libavcodec 和 vaapi 来加速解码的例子,但是你如何使用它来加速编码呢?

0 投票
0 回答
1540 浏览

gstreamer - 警告:错误的管道:没有元素“vaapidecode”

当我运行这条线时

我收到了这个错误

警告:错误的管道:没有元素“vaapidecode”

0 投票
1 回答
1316 浏览

gstreamer - 如何更改 Gstreamer 插件的等级?

我已经下载并编译了 vaapi 插件集,在某些特定情况下效果很好,但它也破坏了我现有的许多管道。我想先修改 Gstreamer 以使用其他解码器。

有没有办法在不修改原始来源的情况下改变 Gstreamer 插件的等级?

0 投票
1 回答
3270 浏览

opencv - 使用 appsrc 和 vaapiencode_h264 插件时的 GStreamer Pipeline 问题

我正在开发一个接受 Opencv 帧(通过 opencv camera Api 发起)的应用程序,并在将这些帧编码为 H264 帧后尝试将它们发送到网络中。

对于这个项目,我被要求通过硬件执行编码。

我使用下面的管道来做发射器的编码位:

我的 Appsrc 的上限是:

然而,当我尝试运行它时,这个管道给了我以下错误:

libva 信息​​:VA-API 版本 0.37.0

libva 信息​​:va_getDriverName() 返回 0

libva 信息​​:试图打开 /usr/lib64/dri/i965_drv_video.so

libva 信息​​:找到初始化函数 __vaDriverInit_0_37

libva 信息​​:va_openDriver() 返回 0

0:00:04.597696251 23508 0x7f724003f940 WARN GST_PADS gstpad.c:3739:gst_pad_peer_query: 无法发送粘性事件

0:00:05.030818739 23508 0x7f724003f940 WARN basesrc gstbasesrc.c:2933:gst_base_src_loop: 错误:内部数据流错误。

0:00:05.030864404 23508 0x7f724003f940 WARN basesrc gstbasesrc.c:2933:gst_base_src_loop:错误:流式传输任务暂停,原因未协商 (-4)

错误:内部数据流错误。

0:00:05.032763231 23508 0x7f724003f940 WARN baseparse gstbaseparse.c:1155:gst_base_parse_sink_event_default: 错误:在流结束之前找不到有效帧

错误:在流结束之前未找到有效帧

正如我所强调的,由于谈判问题,管道没有启动

我已经测试了我的 Appsrc,它似乎正在工作(接收数据)。

谁能建议任何其他插件来克服这个问题?

PS:我已经用相机 v4l2src 插件尝试过这个管道,管道似乎工作状况良好!

你能帮忙的话,我会很高兴 !

谢谢 !

0 投票
1 回答
4263 浏览

c++ - Gstreamer Appsink 未从管道获取数据

我正在设计一个管道,将来自 opencv 应用程序(从网络摄像头获取)的视频帧编码为 video/x-h264 格式,通过网络发送并在另一个不同类型的设备(可能是树莓派)上解码到适合我的项目的 RGB 流。

为此,我应该使用硬件加速的编码器和解码器。由于整个场景非常庞大,目前的开发是在 Intel 机器上使用 gstreamer VAAPI 插件(vaapiencode_h264 & vaapidecode)进行的。此外,我们不需要使用任何网络插件,如 TCPServer 或 UDPServer

为此,我将以下管道用于我的目的:在编码器端:

Appsrc 部分运行良好,而 appsink 部分存在一些问题。

此管道的应用程序部分已设置为以下上限:

"video/x-h264, format=(string){avc,avc3,byte-stream },alignment=(string){au,nal};video/mpeg, mpegversion=(int)2, profile=(string)simple "

我的appsink的数据提取代码是

在启动管道并检查我的应用程序接收器中填充的缓冲区后,我无限期地陷入了下面所说的代码行:

我有以下问题:1)我的appsink Caps 是否正确?如果不是,我如何确定他们的上限?2)我上面的管道有问题吗?

如何使用 Appsink 解决此问题?

任何形式的帮助都会很有用!

谢谢 !!

0 投票
0 回答
2021 浏览

c++ - VA-API 无法在 VMware Ubuntu 实例中运行

我的系统是在 Windows 10 主机上的 VMware Workstation 12.0.1 中运行的 Ubuntu 15.10,我正在尝试运行一个依赖 VAAPI 的程序,但是当它开始初始化 VAAPI 时,它返回一个错误:

当我运行vainfo它时,它会显示相同的错误消息。

问题是我的系统上没有 vmgfx_drv_video.so,我尝试将其链接到/usr/lib/x86_64-linux-gnu/dri/vmwgfx_drv.so但没有帮助。

我重新编译了 VMware 视频驱动程序,但仍然没有给我丢失的文件。(按照这些说明:http ://www.mesa3d.org/vmware-guest.html )

我的问题是:是否有 VMware VA 驱动程序,如果有,那么如何获得它?

0 投票
1 回答
3655 浏览

ffmpeg - 使用 Intel HD4000 / VA API / FFMPEG / OpenGL 在 Linux + GPU 中对两个全高清流进行编码

我想使用主机上的 linux/xorg 将两个完整的高清流从我的笔记本电脑实时编码/流式传输到远程位置。

VA API

为此,我一直在使用 VA API,但 5.59 fps 的性能非常糟糕(请参阅下面的粘贴)。

FFMPEG

使用带有 CPU 编码的 ffmpeg,我得到大约 200 fps,但随后我的 Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz 的所有内核都处于忙碌状态并且风扇打开。

未来的计划

我希望 GPU 支持编码,然后将其集成到流式传输虚拟 xorg“屏幕”的程序中,有关我的计划的更多详细信息,请参阅https://lastlog.de/wiki/index.php/Raspberry_PI_virtual_screen

也许 h264 甚至不是我想要的?因此,如果有人对不同的实施提出建议,我会欢迎。

除了VA API似乎还有QuickSync但我还没有尝试过它,因为它还没有打包在 NixOS 上。

注意:我需要一个库才能顺利集成到代码中。

我已经看到了https://www.reddit.com/r/linux/comments/1qk1yu/is_there_currently_opensource_software_to_encode/但我不确定如何处理它。

0 投票
1 回答
1852 浏览

linux - eglCreateImageKHR 返回 EGL_BAD_ATTRIBUTE 错误

我已经通过 FFmpeg 使用 VAAPI 在 Linux 上实现了硬件解码。由于我有一个 OpenGL 应用程序,我正在使用 vaCopySurfaceGLX 将解码的 VAAPI 表面转换为 OpenGL 纹理。除了制作了一个副本(在 GPU 上)之外,这一切正常。有人告诉我,我可以使用 EGL 直接将 VAAPI 表面用作 OpenGL 纹理。我查看了一些示例(主要是 Kodi 源代码),但我无法创建 EGLImageKHR。函数 eglCreateImageKHR 返回 0,当我检查错误时,我收到 EGL_BAD_ATTRIBUTE 错误,但我不明白为什么。

下面是我如何转换 VAAPI 表面。

在初始化期间,我以这种方式设置 EGL:

稍后,要创建我的 EGL 图像,我会这样做:

查看以下文档https://www.khronos.org/registry/egl/extensions/EXT/EGL_EXT_image_dma_buf_import.txt中可能导致此错误的原因,我还尝试添加以下选项,因为我的格式不是平面

我使用的代码与我见过的所有示例相似,所以我不确定错误是什么。

请注意,我已经删除了这篇文章的所有错误检查。除 eglCreateImageKHR 外,上述所有调用均成功。

0 投票
1 回答
246 浏览

mingw - 在 Windows 上构建 libpthreads-stubs-0.3 时出错

我正在尝试在具有 MinGW 和 MSys 环境的 Windows 机器上编译 libpthreads-stubs-0.3(用于 vaapi)。我已经在 MinGW 中安装了 mingw32-pthreads-w32 开发包(版本 2.9.1-1)。

现在,当我尝试编译 libpthreads-stubs-0.3(只有一个文件被调用stubs.c)时,我得到一个类型冲突的错误:

现在,当我#include <pthread.h>在文件顶部评论并将其放入其中时ifndef(因为如果我不这样做,我会得到一个错误:error: unknown type name 'pthread_t'这很明显)我得到与上面相同的错误:

编辑: Stubs.c 文件代码

0 投票
0 回答
1494 浏览

virtual-machine - Virtualbox 中的 GStreamer:libva 信息​​:va_openDriver() 返回 -1

我在Virtualbox 5.0.4中使用GStreamer 1.2.4

当我启动一个简单的管道(如videotestsrc ! autovideosink)时,我收到有关图形硬件加速问题的错误(va_openDriver() 返回 -1)。

如何让 GStreamer 在虚拟机中工作?