gstreamer插件调用ffmpeg 详解

Gstreamer调用FFMPEG解析
----Gstreamer 是如何操作ffmpeg的,以及ffmpeg是如何demux的(AVI 容器格式为例)


AVI容器格式较为简单,所以这里用AVI为例,分析gstreamer如何通过ffmpeg来对多媒体文件demux,获得原始数据流。


1. Gstreamer,ffmpeg, OMX框架关系

 
图一,框架



Gstreamer通过gst-ffmpeg插件,来管理文件container的demux,gst-ffmpeg通过ffmpeg的libavformat来具体实现对各种文件容器的demux。


1, 主循环建立在gst-ffmpeg插件中, gst_ffmpegdemux_loop 
2,gst-ffmpeg调用ffmpeg的API av_read_frame , 来读取一个完整的帧数据 
3,ffmpeg 在av_read_frame内部,完成demux工作 
4,文件系统的读操作,由ffmpeg调用gstfilesrc插件的read来实现 
5,一帧数据读出以后,由gst-ffmpeg利用gstreamer的pad push 机制,送到gst-OMX
6,  pad push 到GST-OMX后,立即返回。OMX实质上采用异步的方式,送到解码器 


2. Gstreamer调用Ffmpeg的调用链
下面图二在图一的基础上展示了各插件各模块之间的具体调用关系,就不用语言叙述了,对着代码看吧。。。
 

图二,各模块调用链



3. Avi容器格式介绍
AVI格式是音频视频交错(Audio Video Interleaved)的英文缩写,它是Microsoft公司开发的一种符合RIFF文件规范的数字音频与视频文件格式,原先用于Microsoft Video for Windows (简称VFW)环境,现在已被Windows 95/98、OS/2等多数操作系统直接支持。AVI格式允许视频和音频交错在一起同步播放,支持256色和RLE压缩,但AVI文件并未限定压缩标准,因此,AVI文件格式只是作为控制界面上的标准,不具有兼容性,用不同压缩算法生成的AVI文件,必须使用相应的解压缩算法才能播放出来。常用的AVI播放驱动程序,主要是Microsoft Video for Windows或Windows 95/98中的Video 1,以及Intel公司的Indeo Video。

  在介绍AVI文件前,我们要先来看看RIFF文件结构。AVI文件采用的是RIFF文件结构方式,RIFF(Resource Interchange File Format,资源互换文件格式)是微软公司定义的一种用于管理windows环境中多媒体数据的文件格式,波形音频wave,MIDI和数字视频AVI
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值