影院平台搭建 - (8)Flash Media 服务器和依旧的编码问题

之前的文章里我应该提到了,我一直在测试的是Wowza Media Server这套Flash媒体服务器,选择的原因,主要是它给出的和Adobe自己的解决方案的众多优势,而且配置简单,使用Java作为Server端服务易于开发,所以备受我的亲睐。

但在进一步的测试中,却发现一个非常致命的问题:在Linux下对于中文路径支持的不完美。
这个不完美主要体现在,当路径中有中文时无法找到文件,日志里的记录也是问号而不是正确的中文内容。

为什么说是不完美而不说不支持,主要是因为我尚且无法排除是否是openSuse系统的问题。根据网上的众多资料,这个应该是Java虚拟机默认编码的问题。根据我自己从System.getProperty("file.encoding")里获取的信息,我系统上的jvm编码应该是ANSI_X3.4-1968,这个是肯定会出中文乱码问题的。但网上说的/etc/sysconfig/i18n文件在openSuse系统中并不存在,手动新建也毫无效果,考虑到系统自带的JDK本身目录就非常古怪(JAVA_HOME=/usr/lib64/jvm/jre),很可能是Novell在里面做了什么patch。反正我没有找到如何修改JVM的默认系统编码。
找不到修改默认系统编码的方法,我就打起另外一个主意:强制让它在启动的时候使用UTF-8编码。通过修改setenv.sh中的JAVA_OPTS为"-Dfile.encoding=UTF8",让JAVA强行用utf8编码运行。这次日志里出现了正确的中文,但依旧是无法找到文件。我彻底的无语了……

在此期间数次和Wowza的团队取得联系(链接),但貌似他们一直坚持自己的Wowza是100%的UTF8,并多次怀疑我URL的问题。但我网上的资料,他们只不过是全部利用JAVA内部是Unicode存储这一特点而已,并没有真正的处理编码。而且很奇怪的是在Windows上可以正常的处理中文路径,这也是他们始终坚持这个想法的依据。当然,我也只好放弃Wowza,毕竟中文支持还是很重要的,虽然说可以通过修改目录和文件的名称避免中文,但在还没有彻底死心前暂时不考虑这个笨办法。

放弃Wowza,实际上还是有不少选择的,开源的Red5,商业的Adobe Flash Media Server。前者功能太弱,而且文档看起来很复杂。所以我又开始研究FMIS。

前面有文章提到我之前测试过一次,当时的情形是FLV支持中文,MP4不支持。但现在经过一番对Wowza的折腾,我觉得这个结论很可疑。为什么会一种支持另一种不支持。于是我又重新测试了一遍。这次下来一切都很顺利。默认的VOD应用能很好的响应中文请求。但始终在自建应用上通不过。而且很古怪的一点是,我按照官方的文档屏蔽了RTMP协议和RTMPS协议,然后重启了一下fms,居然就又不支持了,而且再次出现之前那种情况,哪怕我恢复了设置也不行。这实在是把我弄郁闷了。卸载,然后再重装,又可以,但一旦修改配置,重启服务让配置生效,就又不行了……这委实有点类似当年我编译Notepad2的时候的问题。
心有不甘,于是在Adobe的KB里找答案,翻了半个小时,终于发现一个很大的问题:貌似fms的启动和关闭是通过一个独立程序,而不是Linux自己的那套机制(这是啥Linux程序啊-_-!!!)。
启动、停止和重启要用它目录下面的fmsmgr程序来实现,而不是通常的service命令

./fmsmgr server fms start/stop/restart 而非 service fms start/stop/restart

按照上面的命令重启fms后,一切正常。然后怀疑之前应用建立不起来可能也是这个原因。
类别:影院平台搭建 查看评论
posted @ 2009-08-07 13:35  ayanamist  阅读(526)  评论(1编辑  收藏  举报