Build Environment Variables

When a Jenkins job executes, it sets some environment variables that you may use in your shell script, batch command, Ant script or Maven POM. The following table contains a list of all of these environment variables. Environment Variable BUILD_NUMBER The current build number, such as "153" BUILD_ID The current build id, such as "2005-08-22_23-59-59" […] →Read more

GstBus

GStreamer Bus Overview The GstBus is an object responsible for delivering GstMessage packets in a first-in first-out way from the streaming threads (see GstTask) to the application. Since the application typically only wants to deal with delivery of these messages from one thread, the GstBus will marshall the messages between different threads. This is important […] →Read more

GstElement

GstElement is the abstract base class needed to construct an element that can be used in a GStreamer pipeline. Please refer to the plugin writers guide for more information on creating GstElement subclasses. GstElement 是构建元素的抽象基类 The name of a GstElement can be get with gst_element_get_name and set with gst_element_set_name. For speed, GST_ELEMENT_NAME can be used […] →Read more

how to write a plugin

Gstreamer 提供了一些工具来生成 plugin 的样板代码 git clone https://gitlab.freedesktop.org/gstreamer/gst-template.git cd gst-template/gst-plugin/src ../tools/make_element MyFilter 然后我们就可以来构建自己的 plugin meson build ninja -C build 另外一个更加推荐的选择是采用 gst-plugins-bad 仓库中的 gst-element-maker 工具 →Read more

audio pipeline

read rtsp and demux to video and audio gst-launch-1.0 rtspclientsink name=s location=rtsp://localhost:8554/mystream libcamerasrc ! video/x-raw, width=640, height=480, framerate=30/1 ! videoconvert ! videoscale ! clockoverlay time-format="%d/%m/%y %H:%M:%S" ! x264enc speed-preset=ultrafast bitrate=600 key-int-max=40 ! queue ! s.sink_0 alsasrc ! queue ! audioconvert ! opusenc ! s.sink_1 read and record gst-launch-1.5 v4l2src do-timestamp=true ! videoconvert ! videoscale ! […] →Read more

GStreamer Quality Of Service (QoS)

Quality of Service in GStreamer is about measuring and adjusting the real-time performance of a pipeline. The real-time performance is always measured relative to the pipeline clock and typically happens in the sinks when they synchronize buffers against the clock. When buffers arrive late in the sink, i.e. when their running-time is smaller than that […] →Read more

GraalVM 更高效

GraalVM 提前将您的 Java 应用程序编译成独立的二进制文件。 与在 Java 虚拟机 (JVM) 上运行的应用程序相比,这些二进制文件更小,启动速度快 100 倍,无需预热即可提供峰值性能,并且使用更少的内存和 CPU。 GraalVM 减少了应用程序的攻击面。 它从应用程序二进制文件中排除未使用的类、方法和字段。 它将反射和其他动态 Java 语言功能限制为仅构建时间。 它在运行时不会加载任何未知代码。 Spring Boot、Micronaut、Helidon 和 Quarkus 等流行的微服务框架以及 Oracle Cloud Infrastructure、Amazon Web Services、Google Cloud Platform 和 Microsoft Azure 等云平台都支持 GraalVM。 与在 Java 虚拟机 (JVM) 上运行的应用程序相比,通过配置文件引导的优化和 G1(垃圾优先)垃圾收集器,您可以获得更低的延迟以及同等或更好的峰值性能和吞吐量。 您可以像 IDE 中的任何其他 Java 开发工具包一样使用 GraalVM JDK →Read more

探针让你明察秋豪

Probes 探针 Probes are callbacks that can be installed by the application and will notify the application about the states of the dataflow. 探针就是一些回调函数,它可以装载到应用程序中,由应用程序回调这些函数,以通知数据流的状态信息。 需求 应用程序应该能够监视和控制 pads 上的数据流。 有以下需求: 当 pad 空闲时收到通知,并确保 pad 保持空闲状态。 这对于能够在不破坏数据流的情况下实现元素的动态重新链接至关重要。 当数据、事件 event 或查询 query 在 pad 上推送或发送时收到通知。 还应该可以检查和修改数据。 能够根据回调的结果丢弃 drop、传递 pass 和阻塞 block 数据。 能够根据应用程序线程执行的方法在阻塞的 pad 上丢弃或传递数据。 概述 函数 gst_pad_add_probe() […] →Read more

k8s concepts

Pod:在同一主机上一起部署的一组容器。Pod 是节点上最小的可部署单元,它提供了一种挂载存储、设置环境变量以及供其他容器配置信息的方法。当 Pod 中的所有容器退出时,Pod 也会消亡。 Service:定义一组逻辑 Pod 及其访问策略的抽象。 Volume:可供 Pod 中运行的容器访问的目录。 Kubernetes 架构使用基础资源作为一组更高级资源的基本层。高级资源实现了实际生产使用场景所需的功能,这些功能利用/扩展了基础资源的功能。在图 2.1 中,你可以看到 ReplicaSet 资源控制着一个或多个 Pod 资源的创建。其他的一些高级资源的示例包括: ReplicaSet:定义相同配置 Pod 运行的期望数量。如果 ReplicaSet 中的一个 Pod 终止,则会启动一个新的 Pod,从而将运行中的 Pod 数量恢复到期望数量。 Deployment:为 Pod 和 ReplicaSet 赋予声明式更新的能力。 Job:创建一个或多个运行完即停止的 Pod。 CronJob:基于时间计划来创建 Job。 Namespace:大多数 Kubernetes 资源都属于一个(并且只有一个)命名空间。命名空间定义了名称的范围,其中特定命名空间中的资源命名必须唯一。命名空间还提供了一种通过基于角色的访问控制(RBAC)、网络策略和资源配额等将用户和应用程序相互隔离的方法。这些控制允许创建一个多租户 Kubernetes 集群,允许多个用户共享同一个集群并避免相互影响(例如,「近邻干扰」问题)。 →Read more