Skip to main content

actfw 使用 GStreamer 的附加组件

项目描述

actfw-gstreamer

actfw 的组件使用 GStreamer 进行实现。actfw 是一个用 Python 编写的 Actcast 应用程序框架。

安装

sudo apt-get update
sudo apt-get install -y python3-pip python3-pil 
sudo apt-get install libgstreamer1.0-dev libgirepository1.0-dev ibgstreamer-plugins-base1.0-dev libglib2.0-dev
pip3 install actfw-gstreamer

文档

用法

有关框架的基本用法,请参见actfw-coreactfw

初始化

使用的应用程序必须在使用的组件actfw-gstreamer之前初始化 GStreamer 库。actfw-gstreamer

if __name__ == '__main__':
    import gi

    gi.require_version('Gst', '1.0')
    from gi.repository import Gst
    Gst.init(None)

    main()

videotestsrc

actfw-gstreamer您可以通过使用了解基本用法videotestsrc

from actfw_gstreamer.capture import GstreamerCapture
from actfw_gstreamer.gstreamer.converter import ConverterPIL
from actfw_gstreamer.gstreamer.stream import GstStreamBuilder
from actfw_gstreamer.restart_handler import SimpleRestartHandler


def videotestsrc_capture() -> GstreamerCapture:
    pipeline_generator = preconfigured_pipeline.videotestsrc()
    builder = GstStreamBuilder(pipeline_generator, ConverterPIL())
    restart_handler = SimpleRestartHandler(10, 5)
    return GstreamerCapture(builder, restart_handler)


def main():
    app = actfw_core.Application()

    capture = videotestsrc_capture()
    app.register_task(capture)

    consumer = YourConsumer()
    app.register_task(consumer)

    capture.connect(consumer)

    app.run()

Frame这会使用videotestsrc生成s 。

  • GstreamerCapture是一个Producer
    • 它生成Frame由 的输出组成的 s ConverterBase。在这种情况下,转换器类是ConverterPIL,输出是PIL.Image.Image
  • GstStreamBuilderPipelineGenerator确定如何构建 gstreamer 管道。
  • preconfigured_pipeline提供预配置PipelineGenerator的 s。
  • SimpleRestartHandler是一个简单的实现RestartHandlerBase,它决定了“重启策略”。

有关更多详细信息,请参阅测试

rtspsrc

您可以使用rtspsrc使用preconfigured_pipeline.rtsp_h264().

请注意,截至目前 (2021-04),Actcast 应用程序不能使用具有动态地址的多播 UDP 和单播 UDP。(RTSP 客户端在 RTP 中与 RTSP 服务器通信,并确定多播 UDP 的 adderss。)因此,您只能使用选项protocols = "tcp"。另请参阅https://gstreamer.freedesktop.org/documentation/rtsp/rtspsrc.html#rtspsrc:protocols

您还应该注意解码器。可用的解码器如下:

解码器(包)\设备 树莓派 3 树莓派 4 杰森纳米
omxh264(从gstreamer1.0-omxgstreamer1.0-omx-rpi X ?
v4l2h264dec(来自gstreamer1.0-plugins-good 非常慢 ?

如果您的应用程序支持各种设备,则应按硬件类型进行分支并选择适当decoder_type的 . 例如decoder_type omx树莓派 3 和v4l2树莓派 4 推荐使用。目前,该库不提供自动判断功能。

开发指南

安装开发需求

pip3 install poetry
poetry install

运行测试

poetry run nose2 -v

发布包和 API 文档

CI会自动做。遵循以下分支/标签规则。

  1. 对分支中的下一个版本进行更改master(通过拉取请求)。
  2. 制作一个更新版本的 PRpyproject.toml并将其合并到master分支。
  3. master从分支的 HEAD 创建 GitHub 版本。
    1. 起草新版本
    2. 从下拉菜单中创建名为release-<New version>(例如release-1.4.0)的新标签。Choose a tag
    3. 写标题和描述。
    4. 发布发布。
  4. 然后 CI 将构建/上传包到 PyPI 和 API 文档到 GitHub Pages。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

actfw-gstreamer-0.1.1.tar.gz (13.3 kB 查看哈希

已上传 source

内置分布

actfw_gstreamer-0.1.1-py3-none-any.whl (14.3 kB 查看哈希

已上传 py3