powered by Jive Software

Redfire plugin for Spark

Hello!

Could the one on one chat window be larger?Like half of the whole browser window each one?

Thanks in advance!

Hi yang

I don’t know if I can specify browser width values as a % I think that would require actual coding as opposed to just hacking what Dele has done already.

However I’m attaching some files for the two way video chat that offer some alternative sizes.

448 x 336

512 x 384

The quality does depreciate as the screen gets bigger but this is to be expected.

To use the files you need to rename them and drop them into the video folder to replace myVideo3.swf and video320x240.lzx.swf. (Note the filenames appear to be case sensitive)

I’ve tested the 512 x 384 but not the other ones. They were prepared in the same way though so should work ok.

Good Luck!
myVideo3-512x384.swf (66 Bytes)
video512x384.lzx.swf (77839 Bytes)
video448x336.lzx.swf (77839 Bytes)
myVideo3-448x336.swf (66 Bytes)

I also reworked the 4x3 grid video conference file I did earlier to make the videos bigger (192x144). Files attached
myVideo_4x3_192x144.swf (78566 Bytes)
videoConf-4x3-192x144.lzx.swf (78567 Bytes)

Watch out for sharks and piranha

Thanks for your contributions. You are a good person.

Screen resolutions really depend on the webcam you are using. The best results are when you use the screen resolutions supported directly by the webcam hardware (320x240 for example). Some webcams perform poorly when the webcam driver has to resize. It is like the software generated zoom on a video camera.

Seems we should make the name of the swf file a configuarable option in the next release

I think I may have been stung by a jellyfish!

I’ve found an issue with my modded videoConf files. Whilst they seem to work a treat on my machine they are not working quite right on my collegues machines. They are only seeing the white boxes and yellow labels. No video.

Any idea where I’ve gone wrong? I used OpenLaszlo 3.4 and compiled them as swf 7. Should I have used swf 6 or 8 instead?

Oouch. That must hurt

Let me try them on my PC. swf8 would probably be safer. It depends on the version of the Flash Player. I assume 10.x should compatible with swf6.

I am running 10.3 beta because of the new echo cancellation in Flash Player

It is the myVideo_4x3_192x144.swf file that is not working, at least on my flash 10.3 player. When I replaced it with the original myVideo.swf, it worked.

Thanks again Dele

I’ll VPN back into work later and try this. It sounds like it will work though. We generally use 10 on our machines. I guess it worked on mine due to all the development stuff I have installed.

The real test will be when we roll out Spark and Redfire to nearly 800 machines next week.

I’ll let you know how I get on.

PS I’m rather liking the lzx environment it’s not as scary as it first looks. I may even look at the flex stuff later.

Thank you,Mike!

I’m really appreciated of both of you!

I think I‘d better learn how to make the .swf files by myself.

But the Openlaszlo seems to be a little hard for me.

I think I will work harder on it.

Thanks,again!~

Hi Yang

It’s not too hard. let me see if I can give you a quickstart tutorial.

Install OpenLaszlo 3.4 (available on the website in the archives of the download section) I needed to use an account with admin rights to my machine to do this.

Download the lzx source code for the file you want to change from http://code.google.com/p/redfire/source/browse/trunk/src/#src%2Fclient%2Fvideo

You can open the source code in notepad or similar text editor to make changes. What you’ll see is a XML structure that also contains a lot of what looks like javascript or c# code. For the most part I’d leave the code alone.

The bits you’ll likely want to change are the values stored in the tags. Each video display on a page is defined by one of these elements. You’ll see in the starting tag for each view a width value that relates to the width of the video display and both an x and y value that defines where on the canvas the top-left corner display will show. So the top left screen has the values x=0, y=0 and width=240 and the next screen along has the values x=241 (notice I added 1 to account for the border) y=0 and width = 240.

So work your way through the file modifying the view tags for each display. If you are going to change the size of the display you may also need to modify where the labels display by changing these lines in each view.

Once you’ve made all the changes to the view you need to redefine the size of the canvas on the first line and save your changes.

To compile the code to a working lzx.swf you need to move the file to your my-apps folder in the OpenLaszlo servers install location on your computer. In my case this was…

C:\Program Files\OpenLaszlo Server 3.4.0\Server\lps-3.4.0\my-apps

Then start the OpenLaszlo server (again I needed to use admin rights) and using a web browser navigate to your lzx file in my case the address was

http://localhost:8080/lps-3.4.0/my-apps/videoconf.lzx

You should see the file load into your browser with some options at the bottom. I don’t know if I’m using it exactly right but I found if you just hit the SOLO button on the bottom it will compile your file and you’ll find the lzx.swf file in the same folder as your source code.

If you find you need to modify the myVideo.swf or myVideo3.swf it’s even easier. Simply download the appropriate xml file from the same location you found the lzx files and edit in any text editor. Then download the swfmill tool and use it something like this.

swfmill xml2swf myVideo.xml myVideo.swf

Best of luck with all this and one final tip that should really go without saying. Create a folder called Original Files in your servers Openfire\Plugins\redfire\video folder and copy all the original files into this before you start replacing them with your own. Then you can always revert back to the working version if it goes wrong.

Also remember that filenames are case sensitive. So myvideo.swf is not the same as myVideo.swf.

If you have more issues post to the forum and I’ll try my best to help.

Hi,Mike!~

Thank you so much for your help !~

I did a little work in some way like this several days ago,

but unfortunately I didn’t make it with openlaszlo-4.9.0-windows.

I’ll do my best to try it again.

Last time,I got some files like .lzx.swf8.swf (about 120kB each one) or .lzx.swf10.swf

without any changes of the .lzx files.

And when I replace the former files (about 76kB each one),it didn’t work.

Is there any method to compile several files together (like a project) ?

Thank you ! ~



**Runtime Target: **swf8

**Application Size: **121K (123,415 bytes)

Compilation Warnings

video320x240.lzx:12:25: Unknown attribute 'event' on method
method needs a non-null name or event attribute
video320x240.lzx:42:27: Unknown attribute 'event' on method
method needs a non-null name or event attribute
video320x240.lzx:46:28: Unknown attribute 'event' on method
method needs a non-null name or event attribute
video320x240.lzx:80:27: Unknown attribute 'event' on method
method needs a non-null name or event attribute
video320x240.lzx:95:27: Unknown attribute 'event' on method
method needs a non-null name or event attribute
.........

You need OpenLaszlo version 3.4 not 4.9.0. On their download site it can be found in the archive section. http://www.openlaszlo.org/archive

As for compiling files together I don’t know but I would guess not or Dele would probably have done this with the existing files. But check the OpenLaszlo documentation to be sure

Hi Dele

On your advice I started to look at the flex stuff and have started working on a flex version of the videoConf.lzx.swf.

Using your lzx source and the screenviewer.mxml as a guide I have had some success (I think the screen layout is good and I am managing to publish the local camera stream) but am struggling to retrieve the published NetStream into the video displays.

I know how busy you must be but if you could take a moment to look over my code (attached) and give me some pointers where I go next it would be greatly appreciated.

Thanks

PS please be nice it’s the first java type coding I’ve done.

##[Updated code on later post]##

Message was edited by: Mike Grimwade

You need some extra code to manage the NetConnection and NetStreams. I will try and add missing code as asson as I become free.

Thanks for starting this

Hi Dele

Made some changes to the code. This newer version is cleaner and has the suggested connection control (heavily copied from the screeviewer.mxml).

I’m still having trouble getting a successful connection to the rmtp server though. Do I need to install something else on my openfire server or should the Openfire with Redfire install be enough? If so what should the rmtp server url be? I’ve tried all sorts of permutations around rmtp:/servername:7070/ but with no luck.

I also still need to add some labels over the video to indicate audio/video feed status and add some onClick handlers to allow control of the video. I’m also having issues with picking up the query strings from the html url but I think I just need to add some javascript to the html to resolve this.

Here’s my latest version
flexStream.mxml.zip (2058 Bytes)

Hi Mike,

You were almost there

The problem was the 12 play stream names which are different from the publish stream name. In the Openlaszo version, it checks to see if the play name matches the publish name and uses the webcam feed direct instead of playing the webcam published stream therby reducing the streams to 11 instead of 12.

I have added the html page as well to pass the me, others and key parameters… It should be a drop in replacement for videoConf.html, but I have not tested it.

See if you can add the contols for setting audio and video on/off, etc

-dele

EDIT

rtmp url is rtmp:/app if HTTP and RTMP are the same otherwise rtmp://rtmp-server/app unless you use a different port from standard (1935) and need to specify it rtmp://rtmp-server:port/app
flexStream.zip (48294 Bytes)

I have the following problem:

If I try to start a video-sharing or screen-haring session, clicking on the link gets me the following error:

HTTP ERROR 404

Problem accessing /redfire/video/video320x240.html. Reason:

Not Found

Powered by Jetty://

(of course if I try to do screen-sharing, the file that cannot be found is /redfire/screen/screenviewer.html)

The fact that the response is coming from Jetty tells me that it is reaching the openfire server, and I confirmed that the file it is looking for does seem to exist. Though I do not know if the realtive location is correct? If I just try navigating to http://servername:7070, I do indeed reach the “Openfire HTTP Binding” webpage. So what is wrong?

FYI I am running Openfire 3.7.0 final on Windows Server 2003 with your 0.0.0.03 plugin and Spark 2.6.0 RC1 on Windows 7 64bit. I double checked to make sure I have the latest Flash and Java installed …

SOLVED? It looks like I have to enable BOSH connections under “Script Syntax” under HTTP Binding in the Openfire Server Settings

i have same issue… the true is …no exit this file:

drwxr-xr-x 2 daemon daemon 4096 may 19 14:12 ./

drwxr-xr-x 12 daemon daemon 4096 may 19 14:12 …/

-rw-r–r-- 1 daemon daemon 171 may 19 14:12 make_redfire_2way.cmd

-rw-r–r-- 1 daemon daemon 174 may 19 14:12 make_redfire_video.cmd

-rw-r–r-- 1 daemon daemon 2049 may 19 14:12 redfire_2way.html

-rw-r–r-- 1 daemon daemon 2608 may 19 14:12 redfire_2way.mxml

-rw-r–r-- 1 daemon daemon 284871 may 19 14:12 redfire_2way.swf

-rw-r–r-- 1 daemon daemon 11216 may 19 14:12 redfire_video.as

-rw-r–r-- 1 daemon daemon 2229 may 19 14:12 redfire_video.html

-rw-r–r-- 1 daemon daemon 6846 may 19 14:12 redfire_video.mxml

-rw-r–r-- 1 daemon daemon 305387 may 19 14:12 redfire_video.swf

-rw-r–r-- 1 daemon daemon 6722 may 19 14:12 swfobject.js

-rw-r–r-- 1 daemon daemon 1481 may 19 14:12 VideoObject.mxml

so if you will try make a test try remplace video320x240.html

to

redfire_2way.html

the final url will look like this:

http://my.server.ext:7070/redfire/video/redfire_2way.html?me=test2&you=test1&key =secret_key

Welcome

I have Openfire 3.7.0 and Spark 2.6.3, the plugin used the 370-0.0.06.zip redfire.
When you run the Openfire server, I have an awful lot of errors:

2011.07.20 07:43:49 com.ifsoft.redfire.RedfirePlugin cannot be cast to com.ifsoft.iftalk.plugin.voicebridge.RedfirePlugin

java.lang.ClassCastException: com.ifsoft.redfire.RedfirePlugin cannot be cast to com.ifsoft.iftalk.plugin.voicebridge.RedfirePlugin

at com.ifsoft.iftalk.plugin.voicebridge.view.VoiceBridgeSummary.init(VoiceBridgeSu mmary.java:37)

at org.jivesoftware.openfire.container.PluginServlet.registerServlets(PluginServle t.java:177)

at org.jivesoftware.openfire.container.PluginManager.loadPlugin(PluginManager.java :464)

at org.jivesoftware.openfire.container.PluginManager.access$300(PluginManager.java :80)

at org.jivesoftware.openfire.container.PluginManager$PluginMonitor.run(PluginManag er.java:1067)

at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)

at java.util.concurrent.FutureTask$Sync.innerRunAndReset(Unknown Source)

at java.util.concurrent.FutureTask.runAndReset(Unknown Source)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101 (Unknown Source)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodi c(Unknown Source)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknow n Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

2011.07.20 07:45:15 java.sql.SQLException: Table not found in statement [SELECT * FROM ofvoicebridge]

2011.07.20 07:45:15 Table not found in statement [INSERT INTO ofvoicebridge (siteID, name, privateHost, publicHost, defaultProxy, defaultExten) VALUES (?,?,?,?,?,?)]

java.sql.SQLException: Table not found in statement [INSERT INTO ofvoicebridge (siteID, name, privateHost, publicHost, defaultProxy, defaultExten) VALUES (?,?,?,?,?,?)]

at org.hsqldb.jdbc.Util.throwError(Unknown Source)

at org.hsqldb.jdbc.jdbcPreparedStatement.(Unknown Source)

at org.hsqldb.jdbc.jdbcConnection.prepareStatement(Unknown Source)

at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.logicalcobwebs.proxool.WrappedConnection.invoke(WrappedConnection.java:162)

at org.logicalcobwebs.proxool.WrappedConnection.intercept(WrappedConnection.java:8 7)

at $java.sql.Connection$$EnhancerByProxool$$2d2a9aa2.prepareStatement()

at com.ifsoft.iftalk.plugin.voicebridge.SiteDao.insert(SiteDao.java:103)

at org.red5.server.webapp.voicebridge.Application.appStart(Application.java:102)

at org.red5.server.adapter.MultiThreadedApplicationAdapter.start(MultiThreadedAppl icationAdapter.java:413)

at org.red5.server.Scope.start(Scope.java:1175)

at org.red5.server.Scope.init(Scope.java:910)

at org.red5.server.WebScope.register(WebScope.java:198)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.in vokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1544)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.in vokeInitMethods(AbstractAutowireCapableBeanFactory.java:1485)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.in itializeBean(AbstractAutowireCapableBeanFactory.java:1417)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.do CreateBean(AbstractAutowireCapableBeanFactory.java:519)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.cr eateBean(AbstractAutowireCapableBeanFactory.java:456)

at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(Abstr actBeanFactory.java:291)

at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingl eton(DefaultSingletonBeanRegistry.java:222)

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(Abstrac tBeanFactory.java:288)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractB eanFactory.java:190)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstant iateSingletons(DefaultListableBeanFactory.java:580)

at org.springframework.context.support.AbstractApplicationContext.finishBeanFactor yInitialization(AbstractApplicationContext.java:895)

at org.springframework.context.support.AbstractApplicationContext.refresh(Abstract ApplicationContext.java:425)

at org.springframework.web.context.ContextLoader.createWebApplicationContext(Conte xtLoader.java:276)

at org.springframework.web.context.ContextLoader.initWebApplicationContext(Context Loader.java:197)

at org.springframework.web.context.ContextLoaderListener.contextInitialized(Contex tLoaderListener.java:47)

at org.red5.server.war.WarLoaderServlet.contextInitialized(WarLoaderServlet.java:1 14)

at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.jav a:645)

at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHand ler.java:189)

at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:978)

at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:586 )

at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:349)

at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java :55)

at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.ja va:165)

at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandle rCollection.java:162)

at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java :55)

at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.ja va:165)

at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java :55)

at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:92)

at org.eclipse.jetty.server.Server.doStart(Server.java:228)

at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java :55)

at org.jivesoftware.openfire.http.HttpBindManager.start(HttpBindManager.java:118)

at org.jivesoftware.openfire.spi.ConnectionManagerImpl.startHTTPBindListeners(Conn ectionManagerImpl.java:555)

at org.jivesoftware.openfire.spi.ConnectionManagerImpl.startListeners(ConnectionMa nagerImpl.java:168)

at org.jivesoftware.openfire.spi.ConnectionManagerImpl.access$000(ConnectionManage rImpl.java:84)

at org.jivesoftware.openfire.spi.ConnectionManagerImpl$1.pluginsMonitored(Connecti onManagerImpl.java:140)

at org.jivesoftware.openfire.container.PluginManager.firePluginsMonitored(PluginMa nager.java:568)

at org.jivesoftware.openfire.container.PluginManager.access$800(PluginManager.java :80)

at org.jivesoftware.openfire.container.PluginManager$PluginMonitor.run(PluginManag er.java:1077)

at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)

at java.util.concurrent.FutureTask$Sync.innerRunAndReset(Unknown Source)

at java.util.concurrent.FutureTask.runAndReset(Unknown Source)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101 (Unknown Source)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodi c(Unknown Source)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknow n Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

Openfire runs on Windows XP SP 3

HTTP ERROR: 503

SERVICE_UNAVAILABLE

RequestURI=/redfire/video/redfire_2way.html

Powered by jetty://

*Help !!!
*