文章分类 -  GStreamer

摘要:虽然GStreamer是跨平台的framework,但不是所有的element都是在所有平台下都有的。比如,音频和视频的sink都非常依赖于当前的window系统,根据当前的平台需要选择不同的element。当然,你在运行playbin或者autovideosink这些element时不需要考虑跨平 阅读全文 »
posted @ 2018-08-05 18:09 刘-皇叔 阅读(568) 评论(0) 推荐(0) 编辑
摘要:Bins 这些是Bin element,它们在内部包含其他的element,已经组成了内部的pipeline,但在外部,我们还是把它们当成一个element。 Playbin 这个element在整个系列的教程里面广泛的被使用了。它会处理播放的方方面面,从源经过解复用、解码到最后的显示。同时它也非常 阅读全文 »
posted @ 2018-08-05 18:03 刘-皇叔 阅读(832) 评论(0) 推荐(0) 编辑
摘要:介绍 快进是以超过正常速度播放媒体的一项技术,反之,慢放是以低于正常速度播放的技术。倒放和播放是一样的,只不过是从后面朝前面播放。 所有这些技术做的都是修改播放速度这件事,如果说正常播放速度是1.0的话,那么超过1.0这个数字就是快进,低于1.0这个数字就是慢放了,正数就是从前朝后放,负数就是从后超 阅读全文 »
posted @ 2018-08-05 17:50 刘-皇叔 阅读(694) 评论(0) 推荐(0) 编辑
摘要:介绍 直接播放Internet上的文件而不在本地保存就被称为流播放。我们在前面教程里已经这样做过了,使用了http://的URL。 当在播放流的时候,一旦从网络上取到媒体数据块就会进行解码和放入显示队列。这意味着如果网络来的数据延迟了,那么显示队列就可能没有数据,播放就会停下来。 解决这个问题的办法 阅读全文 »
posted @ 2018-08-05 17:44 刘-皇叔 阅读(258) 评论(0) 推荐(0) 编辑
摘要:调试记录 GStreamer和插件里面都有大量的调试信息,也就是说,在调试区域内可以给出所有的信息,包括时间戳,线程,种类,源文件名,函数名等等。 调试输出的控制是在一个GST_DEBUG的环境变量控制的,这里给出一个例子,GST_DEBUG=2: 0:00:00.868050000 1592 09 阅读全文 »
posted @ 2018-08-05 17:34 刘-皇叔 阅读(543) 评论(0) 推荐(0) 编辑
摘要:介绍 这些工具就位于SDK的bin目录下。你需要把这个目录加入PATH变量,或者把当前目前目录切换到GStreamer SDK的bin目录。 为了防止多个版本的GStreamer都安装导致的冲突,所有的工具都是有版本的,他们的名字后面跟着GStreamer的版本号。因为这个版本的SDK是1.0,所以 阅读全文 »
posted @ 2018-08-05 17:06 刘-皇叔 阅读(2034) 评论(0) 推荐(0) 编辑
摘要:介绍 GstDiscover是一个在pbutils库提供的工具,接受输入URI或者URI列表,返回它们的信息。这个工具可以工作在同步或者异步模式下。 在同步模式下,只有一个API可以用,就是gst_discoverer_discover_uri(),这个API会阻塞线程直到得到需要的信息。因为阻塞会 阅读全文 »
posted @ 2018-08-05 16:55 刘-皇叔 阅读(444) 评论(0) 推荐(0) 编辑
摘要:介绍 有几种方法可以让应用通过pipeline和数据流交互。本教程讲述了最简单的一种,因为使用了专门为这个而创建的element。 专门让应用可以往pipeline里面传入数据的element时appsrc,而appsink就正好相反,让应用可以从pipeline中获得数据。为了避免混淆,我们可以这 阅读全文 »
posted @ 2018-08-05 16:50 刘-皇叔 阅读(632) 评论(0) 推荐(0) 编辑
摘要:介绍 多线程 GStreamer是一个支持多线程的框架。这就说明,如果有必要它会在内部自动创建/销毁线程。比如:在应用线程中把流解出来。而且,plugin在自身也可以任意的创建线程,比如一个视频解码器为了充分利用4核CPU的能力,可以创建4个线程。 这里最重要的是,当应用在建立pipeline时可以 阅读全文 »
posted @ 2018-08-05 16:43 刘-皇叔 阅读(388) 评论(0) 推荐(0) 编辑
摘要:介绍 Pads Pads允许信息进入或者离开一个element。这个Capabilities(或者简单地叫做Caps)就是指定哪些信息可以通过Pad来传输。例如:RGB视频,尺寸为320x200并且每秒30帧或者16位的音频采样,5.1声道,每秒采样44.1k,甚至可以是类似于mp3/h264之类的 阅读全文 »
posted @ 2018-08-05 15:30 刘-皇叔 阅读(628) 评论(0) 推荐(0) 编辑
摘要:介绍 我们下面就用GTK+这样一个GUI工具来些一个播放器,但基本概念是可以推广到其它工具的(比如QT)。 最重要的是告诉GStreamer把视频输出到哪个window,而这个是依赖于操作系统的,好在GStreamer提供了一个平台无关的抽象层,它让应用可以告诉一个视频输出到哪个window进行渲染 阅读全文 »
posted @ 2018-08-04 18:27 刘-皇叔 阅读(608) 评论(0) 推荐(0) 编辑
摘要:介绍 GstQuery是向一个element或者pad询问一些信息的机制。在这个例子中我们会问pipeline是否支持跳转功能(某些sources 例如实时流是不支持跳转功能的),如果支持跳转功能,那么在播放了10s之后跳转到另一个位置。 在之前的例子中一旦建立pipeline并运行后,我们就是在等 阅读全文 »
posted @ 2018-08-04 17:05 刘-皇叔 阅读(291) 评论(0) 推荐(0) 编辑
摘要:介绍 在一个容器中可能包含多个流(比如:一路视频,两路音频),demuxer会把他们分离开来,然后从不同的输出口送出来。这样在pipeline里面的不同的分支可以处理不同的数据。 GStreamer 的elements之间相互沟通的的端口称为pad (GstPad),Pad分为sink pad:数据 阅读全文 »
posted @ 2018-08-04 16:23 刘-皇叔 阅读(1019) 评论(0) 推荐(0) 编辑
摘要:代码示例 编译: gcc basic-tutorial-2.c -o basic-tutorial-2 `pkg-config --cflags --libs gstreamer-1.0` 工作流程 GStreamer的基本组成是elements,这些elements把数据从source经过filt 阅读全文 »
posted @ 2018-08-04 15:52 刘-皇叔 阅读(624) 评论(0) 推荐(0) 编辑
摘要:代码示例 下面的代码copy到一个文本文件,并改名为basic-tutorial-1.c #include <gst/gst.h> int main(int argc, char *argv[]) { GstElement *pipeline; GstBus *bus; GstMessage *ms 阅读全文 »
posted @ 2018-08-04 13:24 刘-皇叔 阅读(499) 评论(0) 推荐(0) 编辑
摘要:Gsteramer官方教程 Gsteramer 1.0 的安装官方文档 ubuntu下安装: 获取教程源码: 编译和运行教程源码 阅读全文 »
posted @ 2018-08-04 13:18 刘-皇叔 阅读(9746) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示