• 改造OpenMeetings成为Flash视频聊天室(四)
    时间:2009-04-12   作者:佚名   出处:互联网

    --------------------------------------------------------------------
    改造OpenMeetings成为Flash视频聊天室(一)
    改造OpenMeetings成为Flash视频聊天室(二)
    改造OpenMeetings成为Flash视频聊天室(三)
    改造OpenMeetings成为Flash视频聊天室(四)
    --------------------------------------------------------------------

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

    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弄爆的,哈哈

     

    好了,to be continue...

    --------------------------------------------------------------------
    改造OpenMeetings成为Flash视频聊天室(一)
    改造OpenMeetings成为Flash视频聊天室(二)
    改造OpenMeetings成为Flash视频聊天室(三)
    改造OpenMeetings成为Flash视频聊天室(四)
    --------------------------------------------------------------------

    网友留言/评论

    我要留言/评论

    相关文章

    可视电话的关键技术及单机解决方案:本文在对H.320、H.324和H.323等多媒体框架协议分析的基础上,给出了一种基于媒体处理器TM1300的软硬件解决方案。
    透过“宝视通”看中国视频市场新发展:2003年,以中国联通“宝视通”为代表的电信级视频业务服务的推出,有效地促进了视频应用水平的提高,也促使我国的视频市场进入了新的发展阶段。
    企业视频通信的发展趋势和市场状况:可以预见,企业用户对视频通信需求的不断扩大,以及视频通信技术的日益成熟,将进一步促使视频通信走向平民化,中国的视频通信行业也必将迎来盼望已久的春天。
    基于H.323的硬件视频会议系统:文章对基于H.323的硬件视频会议系统的功能效果进行了一定的介绍。
    基于流媒体的软件视频会议系统:文章对基于流媒体的软件视频会议系统从系统功能、系统特色等方面做了阐述。
    视频会议系统体制分析:从视频会议技术发展的历史来看,目前视频会议系统的建立可以依据ITU-T的两大框架建议H.320和H.323来进行,从而形成两种不同的建设方案......