免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1629 | 回复: 0
打印 上一主题 下一主题

在Qtopia media player中增加支持的类型 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-10 17:38 |只看该作者 |倒序浏览

假设:
./qt4.3.1-x86为qtopia4.3.1源程序目录
. /qt4.3.1-x86-build为对应的build目录

1    Step1
首先确认需要增加类型的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]

2    Step2
其次,让qtopia 知道如何处理处理对应的mime type
./qt4.3.1-x86/apps/Applications/mediaplayer.desktop是media 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来播放。

3    Step3
再次,让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]

4    Step4
最后就是测试了,可以放一个test.tmppostfix的文件到home/Documents目录下。
两个地方需要测试,一个是Documents目录中对应的文件,是否可以正常播放,另一个是application的media player application中,是否已经将对应的mime type归类。
注意,在测试之前,需要先make, make install. 但不需要configure.

通过以上方法,可以让Qtopia认识自定义的mime type和相应的后缀名。并能使得Qtopia调用对应的media player来进行播放。从而控制权,从Qtopia交给了media player,进一步交给helix。
下面的工作是,如何让helix支持需要的格式播放,需要对helix进行相关修改。

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

6    Question2
[问题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
    fileExtensions

    cleanupTimer = new QTimer(this);
    cleanupTimer->setSingleShot(true);
    cleanupTimer->setInterval(30000);       // XXX: magic number

    connect(cleanupTimer, SIGNAL(timeout()), SLOT(unload()));
}
这里增加了MIDI的mime type和后缀。这个libtmidity是给Cruxus使用的。Cruxus codec that provides MIDI support (uses libtimidity)。
个人觉得这种做法怪怪的。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/81094/showart_1404412.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP