在Meego上实现一个播放器——总体设计

在Meego上实现一个播放器——总体设计


上一篇草草的介绍了一下需求,不知怎地,写着写着就不想多写下去了。也许是烦躁,也许是没有兴趣。但是无论如何,该做的事情还是要做好的。也许是出于责任感吧。

这一次应该说说设计了,怎么说的。在下只是学生一枚,与那些经验丰富的程序员们还有些差距,更不要提那些所谓设计师架构师了 。虽然水平有限,但是设计这件事,却是非做不可的。为什么呢,当然是为了今后构建的时候少走弯路。所谓磨刀不误砍柴工,正式这个意思。

进入正题。从需求里面剖析,可以看出几个要点。第一,要做的项目是一个播放器;第二,它不仅要支持播放流媒体等一般播放器都有的功能,还有着一般播放器没有的功能,例如录制,编辑,UPnP/DLNA;第三,开发环境是Meego平台,这是一个比较正规的Linux平台,不似Android对Linux的改动那么大。第四,项目属性:开发时间一个月,无经费(实验室有微薄补贴)。

综合以上几点,就可以稍微有个想法。首先,当然不能自己写编解码视频同步吧,那一个月可吃不消。那么调用那些编解码库呢,例如像以前一样用ffmpeg写?那也是不行的,否则至少要在流媒体方面浪费不少时间。如果了解Meego,或者了解Linux上的Media,就一定会想到Gstreamer,这个神器。它是做播放器的不错的工具,易用且灵活。如果让我在Meego上面写一个播放器,我不调用Gstreamer,那一定会绕了远路的。

想想Gstreamer能干什么,不能干什么。那么就可以知道还需要做什么。Gstreamer可以满足一般播放器的需求,流媒体也没问题。录像,也可以做到。(这个框架设计的真是太灵活了,赞一个。)搜了一下,发现用它做视频编辑的不多,但是有一个叫做gnonlin的plugin有一些简单的剪辑功能,就用这个了。前后看看,唯独这个UPnP/DLNA是缺少的。那么这个在用别的库来实现。至于最后的界面,在Meego下开发,当然是用QT啦。

瞧了一下Gstreamer的更新,发现有一个叫做QtGstreamer的库,可以把QT和Gstreamer方便结合,天助我也。再看Meego是否支持,我烧了一个最新版(其实也很老了)的1.2,zypper搜了一下,果然还真有。

中间想了想要不要用QML,比较这个写界面方便,但是跑了一下QtGstreamer-0.10.2的example里面的QML的例子,发现编译不过,看来Meego只更新到QtGstreamer-0.10.1就没再更新下去了。也罢,想想界面的东西应该不多,就直接用QT写啦。

大概想了想要做的东西,岂不是用一个QT把一些开源的东西连起来?一般做开源的应用开发多是如此,最为高效。从哪个部分开始入手呢?在把每一个库的可用性进行验证确认过后,就直接从实现一般播放功能开始啦。后来的工作如何,请看下回分解。

你可能感兴趣的:(linux,android,框架,qt,平台,meego)