Gstreamer 用户使用指南
GStreamer 介绍
GStreamer 是一个开源的多媒体框架。该框架基于插件进行设计,所有的插件都能够被链接到任意的已经定义了的数据流管道中。
官方网址:https://gstreamer.freedesktop.org
GStreamer 框架
Gstreamer 可以通过创建一系列的元件(element),并把它们连接起来,从而让数据流在这个被连接的各个元件(element)之间传输,从而创建一个管道(pipeline)来完成一个特殊的任务,例如:媒体播放或者录音。
Gstreamer 框架如下图所示:
Gstreamer 源码分布结构
GStreamer 的源码按照功能模块被划分到不同的代码仓库(repo)中,每个仓库负责不同的功能。以下是各个仓库的简要说明:
仓库名称 | 功能描述 |
---|---|
gstreamer | 框架和基本库 |
gst-plugins-base | 框架和基本库 |
gst-plugins-good | 成熟且稳定的插件 |
gst-plugins-bad | 正在开发中的插件 ,可能不稳定 |
gst-plugins-ugly | 有 license 问题的插件,用户可以根据地域和法规,进行选择性的规避或安装 |
gst-libav | 基于 libav 的编解码器插件持。 |
这种结构使得每个仓库独立,但都依赖于 gstreamer
和 gst-plugins-base
。
Gstreamer 安装
安装 Gstreamer-1.0 需运行命令:
sudo apt-get update
sudo apt-get install gstreamer1.0-tools gstreamer1.0-alsa gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev
检查 Gstramer-1.0 的版本,需执行命令:
gst-inspect-1.0 --version
Gstreamer 插件说明
可以使用以下命令查询当前 Bianbu OS/Bianbu Linux 系统中 GStreamer 默认支持的插件情况:
gst-inspect-1.0
如果在 gst-inspect-1.0
命令后加上具体的插件名称,可以输出该插件的详细信息。
Video Decoder Plugins
视频解码器的作用是将视频源格式转换为可以被目标接收器(例如显示器)解释的原始格式。Spacemit GStreamer 支持 spacemitdec 专有插件,该插件可以帮助用户获得更优质的结果。
Video Decoder | Package | Description | Bianbu OS(Y/N) | Bianbu Linux(Y/N) |
---|---|---|---|---|
decodebin | gst-plugins-base | Autoplug and decode to raw media | Y | Y |
spacemitdec | gst-plugins-bad | Decodes H264/H265/MJPEG/VP8/VP9/MPEG2/MPEG4 via MPP API | Y | Y |
avdec_xxxx | gstreamer1.0-libav | ffmpeg plugin for GStreamer | Y | Y |
mpeg2dec | gst-plugins-ugly | mpeg1 and mpeg2 video decoder | Y | N |
openh264dec | gst-plugins-bad | OpenH264 video decoder | Y | N |
jpegdec | gst-plugins-good | Decode images from JPEG format | Y | N |
vp8dec | gst-plugins-good | On2 VP8 Decoder | Y | N |
vp9dec | gst-plugins-good | On2 VP9 Decoder | Y | N |
Video Encoder Plugins
视频编码器的作用是将原始数据转换为编码的视频格式,例如 H.264 格式。Spacemit GStreamer 支持 spacemit*enc 专有插件,这些插件可以帮助用户获得更优质的结果。
Video Encoder | Package | Description | Bianbu OS(Y/N) | Bianbu Linux(Y/N) |
---|---|---|---|---|
encodebin | gst-plugins-base | Convenience encoding/muxing element | Y | N |
spacemith264enc | gst-plugins-bad | Encodes H264 via MPP API | Y | Y |
spacemith265enc | gst-plugins-bad | Encodes H265 via MPP API | Y | Y |
spacemitmjpegenc | gst-plugins-bad | Encodes MJPEG via MPP API | Y | Y |
spacemitmpegenc | gst-plugins-bad | Encodes MPEG2/MPEG4 via MPP API | Y | Y |
spacemitvp8enc | gst-plugins-bad | Encodes vp8 via MPP API | Y | Y |
spacemitvp9enc | gst-plugins-bad | Encodes vp9 via MPP API | Y | Y |
avenc_xxxx | gstreamer1.0-libav | ffmpeg plugin for GStreamer | Y | Y |
mpeg2enc | gst-plugins-ugly | mpeg2enc video encoder | Y | N |
openh264enc | gst-plugins-bad | OpenH264 video encoder | Y | N |
jpegenc | gst-plugins-good | JPEG image encoder | Y | N |
vp8enc | gst-plugins-good | On2 VP8 Encoder | Y | N |
vp9enc | gst-plugins-good | On2 VP9 Encoder | Y | N |
Video Sink Plugins
视频接收插件的作用是将处理后的数据通过显示输出进行展示。Spacemit GStreamer 优化了 glimagesink/gtkglsink/waylandsink 插件,这些插件可以帮助用户获得更优质的结果。
Video Encoder | Package | Description | Bianbu OS(Y/N) | Bianbu Linux(Y/N) |
---|---|---|---|---|
autovideosink | gst-plugins-good | Wrapper video sink for automatically detected videosink | Y | Y |
glimagesink | gst-plugins-base | Infrastructure to process GL textures | Y | N |
waylandsink | gst-plugins-bad | Output to wayland surface | Y | Y |
gtkglsink | gst-plugins-good | A video sink that renders to a GtkWidget using OpenGL | Y | N |
fpsdisplaysink | gst-plugins-bad | Video sink with current and average framerate | Y | N |