摘要:摘要 在我们前面的文章中,我们的Pipline都是使用GStreamer自带的插件去产生/消费数据。在实际的情况中,我们的数据源可能没有相应的gstreamer插件,但我们又需要将数据发送到GStreamer Pipeline中。GStreamer为我们提供了Appsrc以及Appsink插件,用于 阅读全文
posted @ 2019-09-30 10:48 John.Leng 阅读 (78) 评论 (0) 编辑
摘要:摘要 GStreamer框架会自动处理多线程的逻辑,但在某些情况下,我们仍然需要根据实际的情况自己将部分Pipeline在单独的线程中执行,本文将介绍如何处理这种情况。 GStreamer多线程 GStreamer框架是一个支持多线程的框架,线程会根据Pipeline的需要自动创建和销毁,例如,将媒 阅读全文
posted @ 2019-09-29 16:17 John.Leng 阅读 (85) 评论 (0) 编辑
摘要:摘要 在常见的媒体播放器中,通常可以看到快进,快退,慢放等功能,这部分功能被称为“特技模式(Trick Mode)”,这些模式有个共同点:都通过修改播放的速率来达到相应的目的。 本文将介绍如何通过GStreamer去实现快进,快退,慢放以及单帧播放。 GStreamer Seek与Step事件 快进 阅读全文
posted @ 2019-08-23 18:06 John.Leng 阅读 (164) 评论 (0) 编辑
摘要:摘要 在常见的媒体文件中,通常包含一些数据(例如:歌手,专辑,编码类型等),用于描述媒体文件。通常称这些数据为元数据(Metadata:data that provides information about other data)。我们可以通过这些元数据对媒体进行归类,同时可以在播放的过程中通过界 阅读全文
posted @ 2019-07-31 16:49 John.Leng 阅读 (141) 评论 (0) 编辑
摘要:简介 在多媒体应用中,我们通常需要查询媒体文件的总时间、当前播放位置,以及跳转到指定的时间点。GStreamer提供了相应的接口来实现此功能,在本文中,我们将通过示例了解如何查询时间信息,以及如何进行跳转到指定位置。 GStreamer查询机制 GStreamer提供了GstQuery的查询机制,用 阅读全文
posted @ 2019-07-24 17:45 John.Leng 阅读 (233) 评论 (0) 编辑
摘要:摘要 在以前的文章中,我们了解到了2种播放文件的方式:一种是在知道了文件的类型及编码方式后,手动创建所需Element并构造Pipeline;另一种是直接使用playbin,由playbin内部动态创建所需Element并连接Pipeline。很明显使用playbin的方式更加灵活,我们不需要在一开 阅读全文
posted @ 2019-07-16 13:06 John.Leng 阅读 (263) 评论 (0) 编辑
摘要:摘要 在上一篇文章中,我们介绍了如何将多个element连接起来构造一个pipline,进行数据传输。那么GStreamer是通过何种方式保证element之间能正常的进行数据传输?今天就将介绍GStreamer是如何利用Pad来控制数据的传输。 Pad 我们知道,pad是element之间的数据的 阅读全文
posted @ 2019-07-01 12:54 John.Leng 阅读 (227) 评论 (0) 编辑
摘要:摘要 在 Gstreamer基础教程01 - Hello World中,我们介绍了如何快速的通过一个字符串创建一个简单的pipeline。为了能够更好的控制pipline中的element,我们需要单独创建element,然后再构造pipeline,下面将介绍GStreamer的一些基本概念并展示p 阅读全文
posted @ 2019-06-17 15:23 John.Leng 阅读 (377) 评论 (0) 编辑
摘要:摘要 在面对一个新的软件库时,第一步通常实现一个“hello world”程序,来了解库的用法。对于GStreamer,我们可以实现一个极简的播放器,来了解GStreamer的使用。 环境配置 为了快速掌握Gstreamer相关的知识,我们优先选择Ubuntu作为我们的开发环境,其他平台的开发会在后 阅读全文
posted @ 2019-06-12 11:04 John.Leng 阅读 (384) 评论 (0) 编辑
摘要:什么是Gstreamer? Gstreamer是一个支持Windows,Linux,Android, iOS的跨平台的多媒体框架,应用程序可以通过管道(Pipeline)的方式,将多媒体处理的各个步骤串联起来,达到预期的效果。每个步骤通过元素(Element)基于GObject对象系统通过插件(pl 阅读全文
posted @ 2019-05-30 12:07 John.Leng 阅读 (577) 评论 (0) 编辑