gstreamer-vaapi 之 README
———————————————————OVERVIEW———————————————————
GStreamer-vaapi包含一组基于VA-API的插件,用于GStreamer和helper库
-
vaapi<CODEC>dec
- 取决于“CODEC”的实际值和底层硬件能力,该插件用于解码JPEG、MPEG-2、MPEG-4:2、H.264 AVC、H.264 MVC、VP8、VP9、VC-1、WMV3、HEVC视频到VA表面。这个插件也可以隐式下载解码表面到原始YUV缓冲区。
-
vaapi<CODEC>enc
- 取决于“CODEC”的实际值(mpeg2、h264等)以及硬件能力,该插件用于编码成MPEG-2、H.264 AVC、H.264 MVC、JPEG、VP8、VP9、HEVC视频。默认情况下,生成的是原始格式的比特流,因此结果可以通过管道传输到muxer,例如用于MP4容器的qtmux。
-
vaapipostproc
- 用于过滤VA表面,例如缩放、deinterlacing(bob、运动自适应、运动补偿)、降噪或锐化。这个插件也用于上传原始YUV像素到VA表面。
-
vaapisink
- 用于将VA表面渲染到X11或Wayland显示器。这个插件还具有一个“无头”模式(DRM),更适合远程转码场景,具有更快的吞吐量。
-
vaapioverlay
- 是一种加速合成器,可以混合或合成不同的视频流。
———————————————————Features————————————————————
- JPEG、MPEG-2、MPEG-4、H.264 AVC、H.264 MVC、VP8、VC-1、HEVC和VP9专用解码器
- MPEG-2、H.264 AVC、H.264 MVC、JPEG、VP8、VP9和HEVC专用编码器
- OpenGL rendering through VA/GLX or GLX texture-from-pixmap + FBO
- 支持EGL后端
- 支持Wayland显示服务器
- Support for headless decode pipelines with VA/DRM
- 支持Linux上的主要硬件视频解码解决方案(AMD,英特尔、英伟达)
- 支持Intel HD Graphics硬件上的硬件视频编码
- 支持VA视频处理APIs (VA/VPP)
- 缩放和颜色转换
- 图像增强滤波:锐化,降噪,颜色平衡,Skin-Tone-Enhancement
- 高级deinterlacing:运动自适应,运动补偿
——————————————————Requirements———————————————————
硬件要求
- Hardware supported by i965 driver or iHD, such as
- Intel Ironlake, Sandybridge, Ivybridge, Haswell, Broadwell,Skylake, etc. (HD Graphics)
- Intel BayTrail, Braswell
- Intel Poulsbo (US15W)
- Intel Medfield or Cedar Trail
- Hardware supported by AMD Radeonsi driver, such as the list below
- AMD Carrizo, Bristol Ridge, Raven Ridge, Picasso, Renoir
- AMD Tonga, Fiji, Polaris XX, Vega XX, Navi 1X
- Other hardware supported by Mesa VA gallium state-tracker
———————————————————Usage——————————————————————
VA元素会自动插入到GStreamer的pipeline中,所以,使用playbin应该是能够正常工作的。然而,还有一些可以手动构造的替代pipeline
- Play an H.264 video with an MP4 container in fullscreen mode
gst-launch-1.0 -v filesrc location=/path/to/video.mp4 ! qtdemux ! vaapidecodebin ! vaapisink fullscreen=true
- Play a raw MPEG-2 interlaced stream
gst-launch-1.0 -v filesrc location=/path/to/mpeg2.bits ! mpegvideoparse ! vaapimpeg2dec ! vaapipostproc ! vaapisink
- Convert from one pixel format to another, while also downscaling
gst-launch-1.0 -v filesrc location=/path/to/raw_video.yuv ! videoparse format=yuy2 width=1280 height=720 ! vaapipostproc format=nv12 height=480 ! vaapisink
- Encode a 1080p stream in raw I420 format into H.264
gst-launch-1.0 -v filesrc location=/path/to/raw_video.yuv ! videoparse format=i420 width=1920 height=1080 framerate=30/1 ! vaapih264enc rate-control=cbr tune=high-compression ! qtmux ! filesink location=/path/to/encoded_video.mp4