问题标签 [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.
encoding - 你如何让 FFMPEG 用 vaapi 进行编码?
我见过各种使用 libavcodec 和 vaapi 来加速解码的例子,但是你如何使用它来加速编码呢?
gstreamer - 警告:错误的管道:没有元素“vaapidecode”
当我运行这条线时
我收到了这个错误
警告:错误的管道:没有元素“vaapidecode”
gstreamer - 如何更改 Gstreamer 插件的等级?
我已经下载并编译了 vaapi 插件集,在某些特定情况下效果很好,但它也破坏了我现有的许多管道。我想先修改 Gstreamer 以使用其他解码器。
有没有办法在不修改原始来源的情况下改变 Gstreamer 插件的等级?
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 插件尝试过这个管道,管道似乎工作状况良好!
你能帮忙的话,我会很高兴 !
谢谢 !
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 解决此问题?
任何形式的帮助都会很有用!
谢谢 !!
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 驱动程序,如果有,那么如何获得它?
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/但我不确定如何处理它。
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 外,上述所有调用均成功。
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 文件代码
virtual-machine - Virtualbox 中的 GStreamer:libva 信息:va_openDriver() 返回 -1
我在Virtualbox 5.0.4中使用GStreamer 1.2.4。
当我启动一个简单的管道(如videotestsrc ! autovideosink)时,我收到有关图形硬件加速问题的错误(va_openDriver() 返回 -1)。
如何让 GStreamer 在虚拟机中工作?