close

改造OpenMeetings成为Flash***室(四) - [Development]

2008-03-05

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://fallenlord.blogbus.com/logs/16471632.html

本来是没什么东西好写的了,不过这几天的持续改造中又出现了各种让人比较头疼的问题,准备将这篇文章作为持续更新,遇到比较疑难的问题我会一直发上来。

1. 改进摄像头

    这不知道是否算的上个bug,google了一下,中文网页没见人提过,英文的话。。俺英文比较差看不太懂,呵呵。
    现象是这样的,进入房间后显示的视频,会根据不同的摄像头被切掉一部分,有的摄像头只切掉边缘一小块,而有的摄像头甚至只显示了原面积的1/9,平时可以看见一个身体的,这里却只能看见一只眼睛。
    由于我的需求是需要让不同的视频框有不同的大小,俺花了一个下午的功夫才搞定摄像头视野被裁切的问题,下面是修改的部分,大家可以自己修改试试。
    /conference/remote/devvideoview.lzx文件中,在类devvideoview中增加两条attribute:

        <attribute name="_myWidth" value="160" />
        <attribute name="_myHeight" value="120" />
    修改<method name="init">中:
            vid._width = this.width;
            vid._height = this.height;
    改为:
            vid._width = this.myWidth;
            vid._height = this.myHeight;
    修改<method name="setWidth" args="w">中:
            if (!this._clipinitdone) {
                this.width = w;
                return;
            }
    改为:
            if (!this._clipinitdone) {
                this.width = 576;
                this.myWidth = w;
                return;
            }
    修改<method name="setHeight" args="h">中:
            if (!this._clipinitdone) {
                this.height = h;
                return;
            }
    改为:
            if (!this._clipinitdone) {
                this.height = 432;
                this.myHeight = h;
                return;
            }
 

2. 修复房间用户数量不增加问题

    我的版本r988有这个问题,感觉这也算一个bug。
    问题的现象是,用户加入房间后房间的用户数量始终为0,这样主要是房间人数上限就没有起到作用了。后来看了下程序,发现是客户端调用rooms_id不正确导致的,只需要修改/xmlcrm/content/conference/roomlistItem.lzx文件,将所有的this.obj.rooms_id全都改为this.obj.room.rooms_id即可解决问题。

 

3. 服务器端代码嵌入中文,ant提示中文警告的问题

    这个其实不算是openmeetings的问题,不过开始还是让我头痛了一把。由于ant编译的默认编码是根据系统的编码来确定的,因此如果java文件存成utf-8而系统编码又是GBK(win2000)或者GB18030(winxp)里面又含有中文,那么ant编译的时候就会提示警告。如果只是注释是中文,则警告也不会有什么影响,但是如果有字符串里面写着中文,就出问题了。
    解决方法是查找build.xml文件中所有的javac标签,为其加上属性encoding="UTF-8"即可解决问题。

 

4. RED5服务器0.7以上版本无法配置针对项目的log的问题

    这个问题是由于red5服务器最新版由log4j改为使用logback导致的。如果使用red5 0.63或以下版本,原来的openmeetings中的配置是没有问题的,如果使用0.7或以上版本,则openmeetings需要修改才能使之按照项目配置正常输出log。方法如下:

    (1) 在openmeetings下的lib/red5中删除以下jar包,这里注意,如果项目中有其他的log4j-xxx.jar也要删除

    slf4j-api-xxx.jar
    log4j-xxx.jar
    slf4j-log4j12-xxx.jar
    jcl104-over-slf4j-xxx.jar
    slf4j-simple.jar
    slf4j-simple-xxx.jar
    commons-logging-xxx.jar

 

     (2) 在red5安装路径下的lib中找到如下jar包:

    slf4j-api-xxx.jar
    logback-core-xxx.jar
    logback-classic-xxx.jar
    log4j-over-slf4j-xxx.jar
    jcl104-over-slf4j-xxx.jar
    复制到openmeetings下的lib/red5中并将其加入eclipse的classpath

 

    (3)  在openmeetings项目中webapps/openmeetings/WEB-INF/web.xml文件中删除以下段落

    <context-param>
        <param-name>log4jConfigLocation</param-name>     
        <param-value>/WEB-INF/log4j.properties</param-value>
    </context-param>

    以及以下段落
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>

 

    (4)  删除openmeetings项目中所有的log4j.properties和log4j.xml,应该是有两个webapps/openmeetings/WEB-INF/log4j.properties和src/app/log4j.properties

    (5) 最后在src/app/添加logback.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %d{MM-dd HH:mm:ss.SSS} %-5level %logger{36} - %msg%n
            </Pattern>
        </layout>
    </appender>
   
    <root>
        <level value="DEBUG" />
        <appender-ref ref="STDOUT" />
    </root>

    <logger name="org.hibernate">
        <level value="WARN" />
    </logger>
    <logger name="org.apache">
        <level value="WARN" />
    </logger>
    <logger name="org.springframework">
        <level value="WARN" />
    </logger>
   
</configuration>

    (5) 这样不需要修改代码,重新启动项目就可以看到logback的输出了,平时的使用和log4j一摸一样,同样是导入org.apache.log4j.Logger类进行操作,因为log4j-over-slf4j.jar包中的类覆盖了原log4j的类,呵呵

    (6) 使用logback还有一个最大的好处,就是logback提供了eclipse的插件,可以直接将red5的内容输出到eclipse的控制台中进行输出,非常方便。插件下载地址在: http://logback.qos.ch/consolePlugin.html
    提醒一下。。。记得一定要配置插件的filter哦。。。不然会被log弄爆的,哈哈

arrow
arrow
    全站熱搜

    安德森 發表在 痞客邦 留言(0) 人氣()