接口
将element当做作GObject 展示了 将 GObject 属性的使用作为应用程序和element交互的一种简单方式。这个方法可以用于简单的getter和setter,但无法用于任何更复杂的操作。对于更复杂的用例,GStreamer 使用基于 GObject GTypeInterface 类型的接口。
这篇文章是介绍性的,不包括源代码示例。请查看 API 参考以获取更多详细信息。
URI 处理程序接口
到目前为止,在我们的示例中,我们仅使用“filesrc” element展示了对本地文件的支持,但 GStreamer 支持更多的location sources。
GStreamer 不需要应用程序知道任何 URI 细节,例如用于特定网络源类型element。这些细节由 GstURIHandler 接口抽象。
URI 命名没有严格的规则,但一般来说,我们遵循通用命名约定。例如,假设您安装了正确的插件,GStreamer 支持:
file:///<path>/<file>
http://<host>/<path>/<file>
mms://<host>/<path>/<file>
dvb://<CHANNEL>
...
为了获得支持特定 URI 的source或sink element,请根据您需要的方向使用 gst_element_make_from_uri () 和 GST_URI_SRC 或 GST_URI_SINK 作为 GstURIType。
您可以使用 GLib 的 g_filename_to_uri () 和 g_uri_to_filename () 在文件名和 URI 之间进行转换。
色彩平衡接口(The Color Balance interface)
GstColorBalance 接口是一种控制element上视频相关属性的方法,例如亮度、对比度等。它存在的唯一原因是,据其作者所知,无法使用 GObject 动态注册属性。
色彩平衡接口由几个插件实现,包括 xvimagesink、glimagesink 和 Video4linux2 element。
视频叠加接口(The Video Overlay interface)
GstVideoOverlay 接口的创建是为了解决在应用程序窗口中嵌入视频流的问题。应用程序为实现此接口的element提供了一个窗口句柄,然后该element将使用此窗口句柄来绘制而不是创建一个新的顶级窗口。这对于在视频播放器中嵌入视频很有用。
该接口由 Video4linux2 元素和 glimagesink、ximagesink、xvimagesink 和 sdlvideosink 等实现。
其他接口(Other interfaces)
GStreamer 提供了很多其他接口,并由其某些element实现。他们之中:
- GstChildProxy 用于访问多子element上的内部element的属性
- GstNavigation 用于发送和解析导航事件
- GstPreset 用于处理element预设
- GstRTSPExtension 一个 RTSP 扩展接口
- GstStreamVolume 接口提供访问和控制流音量级别
- GstTagSetter 用于处理媒体元数据
- GstTagXmpWriter 用于提供 XMP 序列化的element
- GstTocSetter 用于设置和检索类似 TOC 的数据
- GstTuner 用于提供 RF tunning 操作的element
- GstVideoDirection 用于视频旋转和翻转控制
- GstVideoOrientation 用于视频方向控制
- GstWaylandVideo Wayland 视频接口