Gstreamer调用FFMPEG解析
----Gstreamer 是如何操作ffmpeg的,以及ffmpeg是如何demux的(AVI 容器格式为例)
AVI容器格式较为简单,所以这里用AVI为例,分析gstreamer如何通过ffmpeg来对多媒体文件demux,获得原始数据流。
图一,框架
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的调用链
下面图二在图一的基础上展示了各插件各模块之间的具体调用关系,就不用语言叙述了,对着代码看吧。。。
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
----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的调用链
下面图二在图一的基础上展示了各插件各模块之间的具体调用关系,就不用语言叙述了,对着代码看吧。。。
图二,各模块调用链
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