powered by Jive Software

NEWS: Working video through XMPP implementation!

Good news people, today we managed to create our first XMPP video session and transfer quality images from a USB webcam. It uses a good framerate and speed of transfer is amazing. It is also very low in bandwidth consumption as it uses JPEG compression over RTP.

We currently have a working implementation of our code and after a cleanup this weekend we should be able to distribute it here for inclusion in the Smack library. We are also thinking about eventually porting this code back to C++ so we could hope for Google to include video streaming in their popular Jingle library.

I hope our code will help others with using the Smack API to write audio/video pieces of software. We will also provide a clean and detailed implementation of our video library so anyone can start using it quickly.

Thank you for providing a Java version of Jingle and the Smack library, we hope the code we will upload here will encourage you to keep on publishing your code in the open-source community.

Sincerely,

Francis

Computer Engineering

Université de Sherbrooke

Sorry for the delay, we have cleaned up the source code and we want to provide a full example of it’'s usage.

We’'ll post the code very soon…

Source code, example, instructions for creating a video session based on XMPP standards

http://www.francisrobichaud.com/index.php/2007/07/28/video-streaming-using-jingl e-library/

There is some cleanup needed to be done and one fix to allow simultaneous audio-video sessions but still, video works :stuck_out_tongue:

Have fun !

HI ,i can not open url

Video streaming using Jingle library - Copy of the post on francisrobichaud.com

We’ve implemented the Smack API provided by Ignite Realtime which integrates a Java version of Google’s C++ Jingle library. The audio sessions over XMPP works almost out of the box using Jingle. As we needed video integration in one of our university project, we considered developing additional classes to support video format. After some nice hours of coding, we now have successfully accomplished this duty and we can post the source here with informations on how to get video working.

So here are the general steps to take to get a video session established between two parties. Please note that the way the libraries do not currently allow a simultaneous video and audio session. We might work on that in the next days.

1 - You need a XMPP server. Unfortunately, there are some differences in the Jingle integration of Google and Ignite Realtime. While we are able to connect to the GTalk server using Smack API, it is not possible to directly use Smack’s Jingle to create audio-video sessions with other GTalk users. The best thing is to use Ignitime Realtime’s Openfire application.

2 - Create users and add manage their rosters. Once the server is up, add several users via the web administration interface (http://localhost:9090). Then, the best thing is to use a XMPP client such as Ignite Realtime’s Spark application and add the users you want to be able to communicate with.

3 - Open Eclipse and get projects to compile. While this can seem quite easy for some people, it can be very painful for others. You will need 2 projects in your Eclipse workspace: the Jingle project available from a subdirectory in the Smack library and the project provided here. Both projects need a reference to smack.jar and smackx.jar. Jingle will also need to have all the jars in it’s /lib and /build/merge.

4 - Install JMF (link), open the JMF registry editor application once the installation complete. You will then have to hit detect devices to have any usb webcam found. Unfortunately for mac users, it seems like the iSight camera doesn’t get detected by the application. We have used a regular USB logitech camera for our successful tests.

5 - You will need two computers, one to act as a client and one as a server. The AVManager class has can be run has an application. The server waits for an XMPP Jingle session request while the client immediately tries to establish a connection with the first available contact on it’s roster.

Download files:

Video Jinglle Library

replace your /jingle/source/org/jivesoftware/smackx/jingle/mediaimpl/jmf

from the Smack’s 3.0.4+ source code.

CommClient project