站点图标 CNX中文站

自定义构建GStreamer使之包含你应用需要的功能

由于全球软件咨询公司 Collabora 和华为之间的合作,现在构建GStreamer时可以只使用特定应用程序所需的功能了。这样可以减少那些存储空间受限的嵌入式系统二进制文件的大小。

可能有一些人不了解Gstreamer,Gstreamer其实是一个非常流行的开源多媒体框架,广泛用于各种项目和产品中。它拥有很多的功能,这些功能分布在超过 30 个库中,而且Gstreamer在 230 个插件中有超过 1600 多个元素。数量如此繁多的功能在台式PC和大多数智能手机上应用时都不是问题,但对于某些系统来说,Gstreamer二进制的文件可能太大了。直到现在也还没有一种简单、好用的方法来为特定应用程序定制构建GStreamer。不过,Collabora 公司现在更改的代码可以让gst-build生成最小的 GStreamer 构建了。这也算是一个不错的变化了。

自定义构建的Gstreamer

其实,这次Collabora公司的Gstreamer是在去年 9 月发布的 GStreamer 1.18 基础上构建的。此次又构建了一项新功能,这个新功能可以将GStreamer整体构建到单独一个名为gstreamer-full并包含所有的库的共享库中,该共享库同时也包含插件和其他依赖项,例如 GLib。该公司解释说,gst-build 已经提供了要构建插件的选项,通过使用 gstreamer-full 库,可以使用-Dgst-full-libraries=来选择最终库包含哪些库。然后根据配置和可用的依赖项自动包含插件。下面是一个示例:


所有这些都已经包含在 Gstreamer 1.18 中。那么 Collabora 究竟做了什么?其实他们向 Gstreamer 菜单添加了五个新选项从而提供了更好的粒度,如下所示:
重要的部分是-Dauto_features=disabled行,它禁用自动特性选择,然后允许我们在选定的插件中选择特定的特性。

Element、typefind、device-provider 和 dynamic type 都是Gstreamer 文档中定义的插件功能。

为了展示该解决方案,Collabora公司 首先构建了 Gsteamer ,然后将所有选项生成一个 49.2 MB 的 gstreamer-full 静态库,然后是仅包含三个元素的自定义构建,即 filesrc、fakesink 和identity:


你们可以在他们的公告中找到有关 Collabora 公司实施的更多详细信息。
最终整个文件就只有 3.2 MB 的大小了,或者说大小减少了 93.5%。还是十分不错的。

分享这篇文章
退出移动版