在Ubuntu 22.04/20.04 LTS Linux上安装GStreamer
GStreamer 是一个为处理多媒体应用程序的开发人员提供的框架。 因为该框架有助于创建用于音频和视频处理的多媒体应用程序和管道。
因此,如果您想尝试一下,我们将在本文中讨论在 Ubuntu 系统上安装 GStreamer 的步骤。
笔记: 我们在 Ubuntu 22.04 上执行本文,但是,对于 20.04 也是如此,但通过默认系统存储库的 GStreamer 版本会有所不同。
推荐:如何在Linux上安装Microsoft Excel
第1步:更新系统包
在命令终端上,从系统更新命令开始安装新可用的软件包更新。 此外,重建 APT 包缓存对于获取新版本包的信息是必要的,给定的命令也可以。
sudo apt update && sudo apt upgrade
步骤 2:在 Ubuntu 上安装 GStreamer
GStreamer 可以轻松地安装在 Ubuntu Linux 上,无需使用 APT 包管理器添加任何第三个存储库。 不仅是核心包,我们还可以安装必要的GStreamer组件,包括工具、基本插件、好插件、坏插件和丑插件。
这是要遵循的命令:
apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
第三步:检查版本
安装完成后,我们可以检查GStreamer是否安装正确。 为此,请使用给定的命令。
gst-inspect-1.0 --version
如果在输出中您看到版本信息,则表示 GStreamer 已成功安装。
步骤 4:GStreamer 代码示例
让我们举一个例子,我们将通过 Gst 模块在 Python 中使用 GStreamer 管道。
创建一个带有 Python 扩展名的空白文件:
nano video.py
现在,添加以下代码:
import gi
gi.require_version('Gst', '1.0')
from gi.repository import Gst
def main():
# Initialize GStreamer
Gst.init(None)
# Create a pipeline
pipeline = Gst.parse_launch("videotestsrc ! autovideosink")
# Start the pipeline
pipeline.set_state(Gst.State.PLAYING)
# Wait for EOS (End-of-Stream) or error
bus = pipeline.get_bus()
msg = bus.timed_pop_filtered(Gst.CLOCK_TIME_NONE, Gst.MessageType.ERROR | Gst.MessageType.EOS)
# Stop the pipeline
pipeline.set_state(Gst.State.NULL)
if __name__ == '__main__':
main()
按保存文件 Ctrl+X 然后输入 是 之后点击 进入 钥匙。
之后运行该文件:
python3 video.py
如果一切正确,您将看到一个带有视频测试模式的窗口,如给定的屏幕截图所示:
在上面给出的示例中,简单的 GStreamer 管道生成测试视频模式 (videotestsrc) 并将其显示在窗口 (autovideosink) 中。
以下是我们用于执行此示例的代码的说明:
- 首先从以下位置导入必要的模块
gi.repository
打包并初始化Gst模块。 - 这
main()
函数被定义为包含我们的 GStreamer 代码。 - 里面
main()
,用于初始化 GStreamer 使用Gst.init(None)
。 - 我们使用创建管道
Gst.parse_launch("videotestsrc ! autovideosink")
。 该管道由视频源元素(videotestsrc
)和视频接收器元素(autovideosink
)。 - 管道将通过将其状态设置为 Gst.State.PLAYING 来启动。 之后,我们等待管道到达流的末尾(EOS)或使用消息总线遇到错误。 鉴于,
timed_pop_filtered()
方法将允许我们阻塞直到收到特定的消息类型。 - 一旦管道完成或遇到错误,我们将其状态设置为
Gst.State.NULL
阻止它。
要了解有关 GStreamer 用法的更多信息,请查看其文档。