Redfire 0.0.0.5 Release

Ignite realtime communiity is happy to release Redfire version 0.5 with Spark plugin version 0.8

Changelog
  • Fixed: Home page (index.html) page broken links due to last set of changes. Added missing publisher.swf tester appliccation
  • Fixed: Prompt for Redfire audio/video in Spark does get removed
  • Fixed: URL still shows when prompt is displayed in Spark
  • Fixed: Cursor position incorrect when x and y not zero in screenshare
  • Fixed: malformed URL error with “about:blank”
  • Changed: RTMP is now the default instead of RTMFP for 2way and conf audio/video. Edit redfire_2way.html ad redfire_video.html files to enable RTMFP. It is assumed you understand how RTMFP works and how to enable P2P on your network.
  • Changed: Maximium frame rate improved in screenshare and now exposed as a new parameter. Default is 30, but in practice, you would need a very fast PC and lots of bandwidth to share a full 1400x1050 in 30fps.
  • Changed: Video quality improved at expense of bandwidth. Edit redfire_2way.html ad redfire_video.html files to configure as required. It is assumed you understand how Flash video works and the implications of changing quality, bandwidth and frame rate parameters.
How to use Redfire plugin for Spark

You can share audio/video in a chat or chat room (12 people max) by clicking on the red5 icon

Image5.png

You can share all or part or your desktop screen in a chat or chat room by clicking on the picture icon next to the red5 icon

Image7.png

How to upgrade your existing Redfire plugin for Spark,
  1. Quit Spark,
  2. Delete the redfire-plugin folder and redfire-plugin.jar file in your USER_HOME\Spark\plugins
  3. Download the new redfire-plugin.jar file from your Redfire home page
  4. Copy new redfire-plugin.jar to SPARK_HOME\plugins
  5. Restart Spark
Where can I download the plugin

For Openfire 3.6.4 and below http://redfire.googlecode.com/files/redfire-364-0.0.05.zip

For Openfire 3.7.0 and above http://redfire.googlecode.com/files/redfire-370-0.0.05.zip

Dele

Very nice work. We started to test this and it looks promising. It is a 0.5 release, so it is not production ready, but still I think it would be good to include it in Spark 2.6.1 as an experimental feature. Here are some of the things we observed so far with 0.5 (OF 3.6.4):

  1. When sharing a screen the picture quality is really bad. Somehow the resolution and aspect ratio are not right at the remote end, so that text is very difficult to read on the shared screen.

  2. The screen sharing image does not scale down. Using Jitsi when you make the window smaller, the image scales down.

  3. Starting a screen sharing session takes some time, longer than with Jitsi.

  4. While in session we tried to modify the area of the screen that is shared and were not able to do this while in session, even though the UI of the presenter allows you to.

  5. We could not find controls for remote control or changing the frame rate. With Jitsi there is this nice checkbox that turns on remote control.

  6. Usability I think was pointed out earlier. I think where Jitsi looks still more polished is in how the window presents and in particular in the way the user is informed about connection status and in particular error conditions.

  7. When the connection ends, the remote window should close.

  8. Jitsi allows switching back and forth between sharing the screen and video. Not sure why not both are possible. It would be nice to have such a control also to at least switch.

  9. NAT traversal. Not sure what the status is here, but we were able to get screen sharing to work through NAT (port 1935) but not video. Will have to do more testing, but I am just wondering what should work. All these technologies, including Jingle with Jingle Relay Nodes, as well as SIP with some media relay suffer from the same problem. How is this solved using Red5? Do they also use STUN and ICE?

  10. You were saying in an earlier post that with your approach Spark does not need a media framework such as JMF. How does it really work? Where is the encoding / decoding done for video and screensharing?

  11. We use a SIP system for voice / video that we integrated with Openfire. The goal would be an integrated user experience where users can use different devices, including deskphones, smartphones and PC softphones. Flash is really only good for PC softphones. Therefore, for us the most important feature is screen sharing and we would like to see this integrated with SIP voice and video. I guess that again would require a media framework in Spark to do voice and video in SIP, and I am just wondering what the best solution would be to do that in Java.

  12. What expectations would you have on performance? Is this limited by bandwidth in and out of a host that acts as relay for all those cases where peer-to-peer does not work or what is the limiting factor? How do you test this putting the system under load? What is the bandwidth used as a function of screen or video resolution?

  13. Would this technology make it possible to invite external participants to a Web screen sharing conference, where they could join using just a browser and without having an XMPP account on the company’s system? How about sharing a presentation?

Again, great work

–martin

Thanks for the kind words

While in session we tried to modify the area of the screen that is shared and were not able to do this while in session
Not supported. Video stream has to be restarted in order to get new co-ordinates and dimension.

We could not find controls for remote control or changing the frame rate
The maximuim frame-rate can be set in red4-screenshare, but is not exposed as a parameter in Spark

Remote control is invoked by double clicking the viewer screen. I prefer to run fullscreen with no visible UI controls.

When the connection ends, the remote window should close.
On my to-do list

Not sure what the status is here, but we were able to get screen sharing to work through NAT (port 1935) but not video
Has been reported as a fault. I am looking into it. have you tried a non Spark client at the other end?

How is this solved using Red5? Do they also use STUN and ICE?

Red5 uses RTMP. Each client makes an outgoing TCP/IP connection to the Red5 server embedded in Redfire. There is no STUN or ICE involved because it is NOT P2P. If you use RTMFP, then it becomes P2P and a RTMFP rendevous server is used to perform the function that STUN/ICE do.

Where is the encoding / decoding done for video and screensharing?
A single RTMP connection can contain mulitple audio, video streams and a single remote method calls (data) all multiplexed. Audio codec is Speex or Nellymoser and video can be a propietary screen codec, Sorenson or H264 encoded and decoded by the Flash Player or by the Java Flazr library for screen-sharing.

I am just wondering what the best solution would be to do that in Java.
There are many Java libraries for SIP, take your pick. I use mJSIP in Red5phone and NIST in red5-voicebridge. It all depends on what your business drivers are for integration.

What expectations would you have on performance?
RTMP does not scale well because all roads lead to the server. A single Openfire server will only supported a few hundred users. RTMFP is still new and I have not seen any published performance figure yet or done any load testing.

Would this technology make it possible to invite external participants to a Web screen sharing conference, where they could join using just a browser and without having an XMPP account on the company’s system? How about sharing a presentation?

Yes, Try it with Fastpath. The web site visitor will get a link to view the screen share or join the video/audio session.

New version for Redfire Spark plugin.

See http://community.igniterealtime.org/message/213745

Fixes the viewer re-size issue and the closing of the video/screen windows when chat window/tab is closed.

Hi dele,

I tried redfire 0.0.0.5 for openfire 3.7, the rtmp connection is established, but sip registration is not going through, please see error log. What might be the problem?

Thanks

@Exception in thread “Thread-65” java.lang.NoSuchMethodError: org.zoolu.sip.authentication.DigestAuthentication.setA1Parameter(Ljava/lang/Str ing;)V

at org.red5.server.webapp.sip.SIPRegisterAgent.onTransFailureResponse(SIPRegisterA gent.java:392)

at org.zoolu.sip.transaction.TransactionClient.onReceivedMessage(TransactionClient .java:106)

at org.zoolu.sip.provider.SipProvider.processReceivedMessage(SipProvider.java:926)

at org.zoolu.sip.provider.SipProvider.onReceivedMessage(SipProvider.java:1032)

at org.zoolu.sip.provider.UdpTransport.onReceivedPacket(UdpTransport.java:111)

at org.zoolu.net.UdpProvider.run(UdpProvider.java:174)

Try the red5phone website http://code.google.com/p/red5phone

Thanks for your reply.

I am runing red5 phone in openfire enviromen. the link you provided it for stand along red5 server which is not fit in my enviroment.

I have red5 plugin 0.1.11 woring with openfire3.64. I checked log fire, what I have noticed the difference with redfire is:

when respond from asterisk server with failure 401/407, the red5 plugin will resend the Register request, on the other hand, redfire 0.0.0.5 will give up and release the sip port.

And the redfire plugin keep change sip port from 5074 - 5082.

Thanks again