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
 
 
 
 
 
 
posted @ 2021-08-05 19:41  ZyLin-ux  阅读(763)  评论(0编辑  收藏  举报