zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Gstreamer之gst_element_set_state (pipeline, GST_STATE_PLAYING)播放视频流程(二十一)

流程set 视频 播放 Element State Pipeline 二十一
2023-09-14 09:16:06 时间

1、GStreamer是什么?
众所周知,Microsoft's Windows和Apple's MacOS对多媒体设备、多媒体创作、播放和实时处理等方面都有很好的支持,而Linux对多媒体应用一直略显不足,所以为了解决Linux上对多媒体方面的支持,才引进GStreamer。

GStreamer是一个通用的跨平台的流媒体应用程序框架,基于GObject,以C语言写成。 GStreamer并不受限于音频和视频处理,它能够处理任意类型的数据流,因此任意一种流媒体应用都可以支持,如:MeidaPlayer、A/V Editor、VOIP、RTSP、A/V Coder等等。 GStreamer框架是基于插件(plugin)和管道(pipeline)的体系结构,框架中所有功能模块都是可插拔的组件,可随意安装到任意管道上,因此造就了大量的GStreamer的共享库。

2、 pipeline是什么?
 

这是个典型的MeidaPlayer的模型。

source —— 数据来源:可能是file、http、rtp等。

demux —— 解封装:负责把容器里的音视频数据剥离出来,然后分别送给audio/video decoder。

decoder —— 解码:然后把解完后的数据(pcm/yuv)送给audio/video output输出。

output —— 显示:负责将decoder过来的数据呈现出来。

如果把数据想象成流水的话,每个模块功能虽然不同,但基本都是接收上个模块过来的数据,然后加工,把加工后的数据送到下一个模块,这些模块通过某种方式连接起来,就形成了一个流水线(pipeline),这个流水线就是一个Media