gstreamer,vlc,ffmpeg都是开源处理流媒体的软件,这里的比较不涉及功能,仅仅比较源代码。
大约看了一个星期,对这三个 软件都略有了解,简单的谈谈。
0、开发语言
都是使用c语言开发,ffmpeg最为简洁;gstreamer使用了gobject,晦涩;
1、注释
vlc的代码完全没有注释,官网也没有任何文档;
gstreamer的官网上有开发者指引,看完后大概了解gstreamer的设计框架,如element,pad,filter等概念,感觉设计的相当不错;
ffmpeg官网上文档不多,不过注释真是太详细了,超级赞;
2、代码量
vlc代码量算比较少的;
gstreamer分为core,plugin,等等,代码量巨大;而且,gstreamer使用glib2,感觉很不好,可读性差;
ffmpeg文件很多,但组织的很棒,一下子都能找到要领;
代码量没有精确统计,仅仅是个人感觉;
3、代码质量
我个人非常欣赏ffmpeg,代码太棒了;
整个框架结构分为两个主要部分,一个是codec,一个是format,在两个大的目录中,顾名思义,一个是处理编解码,一个是获取原始数据;
format中,只需要看几个文件就可以了解整个系统的运作过程了:
avformat.h,avio.h,avio.c等
4、图形界面
vlc有图形界面,在windows下很好用;
gstreamer不是很清楚;
ffmpeg没有图形界面,仅仅提供了三个命令行工具,这三个工具的选项狂多。三个命令分别是ffmpeg,ffplay,ffprobe
ffmpeg是我非常推崇的代码。
在使用测试的过程中,发现ffmpeg不能播放helix server的rtsp源,应该是ffmpeg解析rtp与helix不兼容造成的,有空的时候查找一下原因,fix一下。