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由 的输出组成的 sConverterBase。在这种情况下,转换器类是ConverterPIL,输出是PIL.Image.Image。
- 它生成
GstStreamBuilder并PipelineGenerator确定如何构建 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-omx和gstreamer1.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会自动做。遵循以下分支/标签规则。
- 对分支中的下一个版本进行更改
master(通过拉取请求)。 - 制作一个更新版本的 PR
pyproject.toml并将其合并到master分支。 master从分支的 HEAD 创建 GitHub 版本。- 起草新版本。
- 从下拉菜单中创建名为
release-<New version>(例如release-1.4.0)的新标签。Choose a tag - 写标题和描述。
- 发布发布。
- 然后 CI 将构建/上传包到 PyPI 和 API 文档到 GitHub Pages。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
actfw-gstreamer-0.1.1.tar.gz
(13.3 kB
查看哈希)
内置分布
actfw_gstreamer-0.1.1-py3-none-any.whl
(14.3 kB
查看哈希)
关
actfw_gstreamer -0.1.1-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | f9ffc933a66f5ee49880c8938181771f315d72963e340ed77c222d37825037e2 |
|
| MD5 | 2b921d3fa27069db1695af96ea1c3191 |
|
| 布莱克2-256 | 5841fe6cacb7b3570a4356a01cc9174fae92bf83be1f4a1998e5181ea17e46fb |