# Application Development

[![](https://img.shields.io/badge/Author-@RucardoLu-red.svg)](https://github.com/gesanqiu)![](https://img.shields.io/badge/Version-1.0.0-blue.svg)[![](https://img.shields.io/badge/license-GPL-000000.svg)](https://opensource.org/licenses/GPL-3.0/)

### 概述

GStreamer作为一个音视频应用开发框架，提供了一个快速开发工具`gst-launch-1.0`，开发人员能够将现有的Pulgins以一定规则任意组合成一条Pipeline并运行起来。但这显然不能满足更高级的开发需求，对于开发人员来说我们往往需要对音视频的源数据进行操作，操作单位至少是一帧图片或一段音频，事实上这些数据就在Pipeline中以Stream的形式在各个Plugin之间传递，而为了能够操作这些数据，我们需要更高的访问权限。

本章节旨在展示一个基于GStreamer框架的简单应用是如何被开发出来的，以及我们能够实现的功能。

本章节代码仓库：[application-develop](https://github.com/gesanqiu/gstreamer-example/tree/main/application_develop)

章节内容：

* 构建pipeline的两种方式：gst\_parse\_launch()和gst\_element\_factory\_make()
* uridecodebin
* appsink/appsrc
* GstBufferPool
* GstPadProbe
* 自定义plugin

### 开发平台

* 开发平台：Qualcomm® QRB5165 (Linux-Ubuntu 18.04)
* 图形界面：Weston(Wayland)
* 开发框架：GStreamer， OpenCV
* 第三方库：gflags，json-glib-1.0，glib-2.0
* 构建工具：[CMake](https://ricardolu.gitbook.io/trantor/cmake-in-action)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ricardolu.gitbook.io/gstreamer/application-development.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
