回复网友的一个mail,关于嵌入式MP4,用ARM+Linux来实现。

时间:2021-10-08 22:30:06
你可以理一下思路,记录一下大体会涉及到的技术点。

MP4 主要是涉及到linux系统,GUI和player,系统通讯。

一:linux移植:
1. toolchain
2. linux的编译
3. 系统基本能运行起来

二:GUI:
可选的包括:
microwindows, GTK+directfb等
我用的是microwindows的nano-x方式的,自己需要扩展一下它的windows management功能。
1. GUI编译
2. GUI UI设计
3. GUI与player的通讯 (可以用socket或proc pipe,也可以用soap如upnp[我使 用的],还可以用dbus[gnome现在都用dbus了,不错的东西])

三:player:
可以参考的包括VLC, FFMPEG,gstreamer
VLC的架构非常好,值得参考。
你可以根据你的系统来做简化,支持较少的媒体文件格式。
gstreamer是一个新的开放式的架构
1. player结构,最好是设计成分层结构,让各种具体的player,如wmv, mpeg1,mpeg2,有一个抽象的基类,然后由其来分发到具体类中去处理,VLC中有类 似的做法的。
2.如果是简单的做法可以移植FFMPEG,然后用发送命令控制的方式来实现,但缺点 太多,是下策了。
3. gstreamer目前比较流行,结构非常好,但我还没去应用过。

有一个个人的blog,你可以多翻翻,它里面有不少有价值的东西,我也经常看的:
http://blog.csdn.net/absurd

上面player中的第2点,就能在上面的blog找到。

四:整体体系结构的东西:
可以参考
http://www.gnome.org/mobile/
里面的一张图,包括底层的dbus/glib, 有gstreamer,gconf, 这个图的内容就比 较大了,但结构确实很不错的。
如果你用dbus,那么通讯问题基本就迎刃而解了。
GTK+是一套很成熟的库了,你也是可以应用一下的,总体来说功能要比 microwindows强很多的。但体积要大些了。
player如果自己写一个的话,是需要花些时间的。现成的可移植的,也不一定好处 理,需要你自己研究了。我们是自己写的player,花了不少的精力的。

上面的内容也只是一个介绍而已。希望对你有些帮助。