Chinaunix首页 | 论坛 | 博客
  • 博客访问: 64101
  • 博文数量: 29
  • 博客积分: 1250
  • 博客等级: 中尉
  • 技术积分: 292
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-30 13:04
文章分类

全部博文(29)

文章存档

2009年(24)

2008年(5)

我的朋友

分类: LINUX

2008-11-10 17:38:06

假设:

./qt4.3.1-x86qtopia4.3.1源程序目录

. /qt4.3.1-x86-build为对应的build目录

 

首先确认需要增加类型的mime type是否是qtopia支持的mime type

./qt4.3.1-x86/etc/mime.types文件里存储了所有qtopia支持的mime type

vim ./qt4.3.1-x86/etc/mime.types

格式是如下:

video/mpeg                 mpeg mp2 mpe mpg

video/mp4                   mp4 m4v

video/quicktime                   mov qt

video/tmpvideo           tmppostfix

每一行代表一个mime type类型,如video/mepg,后面跟着的是对应mime type所支持文件的后缀名。这里我增加了一个”video/tmpvideo” mime type,对应的后缀名为tmppostfix,这样Qtopia就能把以tmppostfix为后缀的文件归类为video/tmpvideo type.

这里有个问题,同样的后缀不同的mime type是怎么处理的?[问题1]

 

其次,让qtopia 知道如何处理处理对应的mime type

./qt4.3.1-x86/apps/Applications/mediaplayer.desktopmedia player对应的桌面配置文件

vim ./qt4.3.1-x86/apps/Applications/mediaplayer.desktop

内容和注释如下:

[Desktop Entry]

Comment[]=A media player application

Exec=mediaplayer

Type=Application

Name[]=Media Player

Icon=mediaplayer/VideoPlayer #media player应用程序的icon图标

MimeType="audio/x-wav;audio/mpeg;audio/mpeg3;audio/mp3;audio/x-mp3;audio/mpegurl;audio/x-scpls;audio/amr;audio/mp4;audio/midi;video/3gpp;audio/3gpp;video/mp4;audio/ogg+vorbis;video/tmpvideo" #media player应用程序能支持的mime type

MimeTypeIcons="mediaplayer/AudioPlayer;mediaplayer/AudioPlayer;mediaplayer/AudioPlayer;mediaplayer/AudioPlayer;mediaplayer/AudioPlayer;mediaplayer/AudioPlayer;mediaplayer/AudioPlayer;mediaplayer/AudioPlayer;mediaplayer/AudioPlayer;mediaplayer/AudioPlayer;mediaplayer/VideoPlayer;mediaplayer/VideoPlayer;mediaplayer/VideoPlayer;mediaplayer/AudioPlayer;mediaplayer/VideoPlayer" #和上面MimeType 对应的每个type的图标

[Translation]

File=QtopiaApplications

Context=MediaPlayer

[DRM]

MimeTypePermissions="Play;Play;Play;Play;Play;Play;Play;Play;Play;Play;Play;Play;Play;Play;Play" #media player应用程序遇到和上面MimeType 对应对象时的处理方法

如果需要的mime type, media不支持,可以通过上面的方法加载。这样对应的mime type就会知道使用media player来播放。

 

再次,让media browser知道如何归类mime type

这里的media browser指的是在运行Qtopia之后,在application中的media player application. 它会管理所有认识的文件,并按照相关的规则分类。

./qt4.3.1-x86/src/plugins/mediaengines/helix/helix.conf就是控制分类的规则之一。

vim ./qt4.3.1-x86/src/plugins/mediaengines/helix/helix.conf

内容如下:

[Simple]

MimeTypes=audio/x-wav,audio/mpeg,audio/mpegurl,audio/x-scpls,audio/amr,audio/mp4,audio/3gpp,video/3gpp,video/mp4,application/vnd.oma.drm.content,application/vnd.oma.drm.dcf,video/tmpvideo

UriSchemes=file,http,qtopia

其中MimeTypes所有包含的类型是可以被正确归类的。所以,增加需要归类的mime type.

这里又有一个问题。有一些mime type不在这个列表中,但也能被media player 正确归类,如audio/midi。这个类型是如何控制的?[问题2]

 

最后就是测试了,可以放一个test.tmppostfix的文件到home/Documents目录下。

两个地方需要测试,一个是Documents目录中对应的文件,是否可以正常播放,另一个是applicationmedia player application中,是否已经将对应的mime type归类。

注意,在测试之前,需要先make, make install. 但不需要configure.

 

通过以上方法,可以让Qtopia认识自定义的mime type和相应的后缀名。并能使得Qtopia调用对应的media player来进行播放。从而控制权,从Qtopia交给了media player,进一步交给helix

下面的工作是,如何让helix支持需要的格式播放,需要对helix进行相关修改。

 

[问题1]同样的后缀不同的mime type是怎么处理的?

[解答1]经过测试,会使用最后获得的mime type类型。如果上面的tmppostfix改为mov,则,当遇到mov为后缀的文件名时,会作为video/tmpvideo type来处理。这里有个前提,这个文件没有被Qtopia记录过,Qtopia还会在什么地方这个依赖关系。这个地方也可以查一下。

 

[问题2]有一些mime type不在这个列表中,但也能被media player 正确归类,如audio/midi。这个类型是如何控制的?

[解答2]可以看到./qt4.3.1-x86/src/3rdparty/plugins/codecs/libtimidity/midiplugin.cpp 文件中

MidiPlugin::MidiPluginPrivate::MidiPluginPrivate():

    initialized(false),

    active(0)

{

    mimeTypes << "audio/midi" << "audio/x-midi";

    fileExtensions << "mid" << "midi";

 

    cleanupTimer = new QTimer(this);

    cleanupTimer->setSingleShot(true);

    cleanupTimer->setInterval(30000);       // XXX: magic number

 

    connect(cleanupTimer, SIGNAL(timeout()), SLOT(unload()));

}

这里增加了MIDImime type和后缀。这个libtmidity是给Cruxus使用的。Cruxus codec that provides MIDI support (uses libtimidity)

个人觉得这种做法怪怪的。

阅读(832) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~