Project Ideas on Multimedia Networking

Post your project ideas on multimedia networking such as VoIP, P2P, video processing, audio echo cancellation, etc.

RESTful interface for SIP application service

Build a RESTful interface to a SIP application server so that one can access SIP services from web clients. For example, "/login" could represent a list of currently logged in users, and doing a "GET /login/{email}" gets the contact information of a user identified by that email, "PUT /login/{email}" does a registration with the SIP system, and "DELETE /login/{email} does un-registration. Similarly, "/user/{email}" can represent the user profile and "/user/{email}/messages" could represent user's voice/video messages. Anyone could do a "POST /user/{email}/messages" but only the owner could retrieve his messages using "GET /user/{email}/messages". Finally, "/call" could represent a list of currently active or scheduled conferences, where you can join a call using "POST /call/{call-id}" with your email and session information, disconnect from the call using "DELETE /call/{call-id}/{your-participant-id}". As a first step you will build simple SIP application server with user profile, registration, messages and conference functions. Then you will define and implement various RESTful APIs with authentication and security so that the server can also be accessed from a browser or web clients. Finally, you will use a SIP-RTMP gateway to allow a Flash client to join the SIP conference. You will need to extend the RESTful architecture to allow persistent client-server connection and callback event notifications from server-to-client.

I have more ideas on how the project can be done -- please contact me if interested. You can use the SIP implementation of the p2p-sip project, REST server tools of the restlite project and SIP-RTMP gateway of the siprtmp project. For additional motivation on this project please see my blog article on REST and SIP. Language: Python.

RTSP-RTMP translation

These are two competing streaming protocols on the Internet: RTSP and RTMP. Instead of having a gateway that translates between the two protocols, it might be better to build an integrated client or integrated server -- you can record using RTMP and view using Quicktime (RTSP), or you can use the same client to access real-time streams from RTMP or RTSP. Since RTMP incorporates RPC along with streaming control and media path, whereas RTSP is just streaming control, a complete translation of all the functions may not be feasible. Use: rtmplite, p2p-sip. Language: Python (server), ActionScript (client)

Video conferencing in LAN using Flash Player

The project builds in three stages:

(1) Build a video loopback for Flash Player for capturing camera and displaying local video in high quality using Flash Player. You can start with the existing software mirror code, change it to use compressed loopback of camera, and tune the quality and bandwidth of the camera to keep high quality within 100 Mbps bandwidth requirement. Language: ActionScript.

(2) Incorporate the client-server connection using the rtmplite software to host a Flash video server on local host. Your captured video will be sent to the server and your display will play the video stream received from the server. Language: ActionScript, Python

(3) Experiment with two users connected to the server. You just need to support one video room or conference, where everyone connected to the server are in the same conference. You may want to use the ContainerBox of the videocity project, or may display multiple video as you like. Language: ActionScript

siph323: SIP-H.323 signaling gateway

Implement open source SIP-H.323 interworking function [paper, internet-draft, slides] in Python. I have implemented a closed source siph323 software in C/C++ before. The goal of this new project is to first implement ASN.1 PER in Python, then add H.323 implementation, and finally the interworking function. This is a very involved project because of the complexity of H.323 and unavailability of any Python based H.323 library. I recommend doing it in a group or 2-3 students. Language: Python

sippeer: P2P telephony over SIP

Implement open source P2P-over-SIP approach [paper, detailed, slide] to P2P-SIP in Python. I have implemented a closed source sippeer software before in C++ with nice API. The goal of this new project is to use the programmable server approach to implement the pseudo-code presented in the paper and implement a P2P-over-SIP adaptor. Do not worry about NAT and firewall traversal initially. Language: Python

sipum: SIP and RTSP based voice/video messaging server

Implement open source voice/video messaging server using SIP and RTSP [paper, slides] in Python. I have implemented a closed source sipum project before in C++ with nice API. The goal of this new project is to first implement a simple RTSP client and server, then use the SIP and RTP modules from the p2p-sip project to implement sipum, and finally provide a web interface to access the voice/video messages. You do not need to record in specific formats like snd or mov but can just dump the RTP/RTCP packets in a file. You should allow adding support for new codecs or transcoders so that even if recording was done in G.711, you can listen to message in Speex, for example. Later you can integrate this with siprtmp to allow access from Flash applications as well as videocity. Language: Python

sipconf: SIP/RTP-based conferencing server

Implement an open source SIP/RTP-based multiparty multi-platform conferencing server [paper, slides] in Python. I have implemented it before as a closed source sipconf software with nice API in C++. The goal of this new project is to utilize the programmable server approach, keep the codecs and transcoders as pluggable, support video, and implement recording and playback of conferences. The project should use the SIP and RTP library from the 39 peers p2p-sip project. The next step will be to merge SIP and Flash conferencing using the siprtmp software. Language: Python

sipvxml: SIP-based VoiceXML browser

Implement open source SIP VoiceXML browser [paper, slides] in Python. I have implemented it before in C++ as sipvxml software using a nice API. Two problems with the previous implementation: it was closed source, and used VoiceXML version 1.0. This new project requires implementation of VoiceXML 2.1 in Python using the SIP libraries from the 39 peers p2p-sip project. You can use any available text-to-speech library or keep it open pluggable. The goal is to implement language feature and state machine for VoiceXML. Language: Python

P2P Audio Tool on Windows and/or Mac

Implement a audio tool on Windows and/or Mac OS X that intercepts audio captured and played in the device, and allows you to share it with others, your friends, contacts, etc. The idea is to do transparently implement audio conference and shared listening and chatting without being specific to a tool such as Skype or MSN. Thus, if you are listening to some music and share your speaker device with a friend, he will be able to listen to the same music. If you share your audio device with your friend, he will be able to talk to you using audio conferencing. Use RTP and SIP to support the distributed signaling and media transport. The tool should have option to allow music versus spoken audio, and graphical user interface to allow connecting devices among each other and with friends. Further extend it to allow sharing camera device as well as display device (i.e., part of your monitor display). Language: C/C++. Some background in audio will be helpful.

Video Room Firefox Extension

Implement a video room extension to Firefox using exiting video room services on the Internet. The video room will allow you to automatically video chat with other people browsing the same site or web page. For example, if two people are watching a particular news item and have this extension installed, they will be placed in a video room where they can video chat with each other. Further enhance the experience on other browsers (IE, Safari?), using existing protocols (SIP, Jabber) and using imported contact list from visited web site (e.g., when visiting Linked-In web site, you can automatically video chat with any linked-in profile or friend). Language: JavaScript, and others.

Flash to SIP calls

Using Adobe's Flash Player and Python SIP code, implement a PC-to-phone calling system which should allow both inbound and outbound calls between web browser and SIP. I have some ideas and preliminary code. The ActionScript library will allow any third-party to build user interface for the web-based soft-phone. Language: Python, ActionScript

Completed

The project is completed and closed. You can try out or see the documentation and source code at SIP-RTMP gateway project page.

Flash RTMP server in Python

My project named Flash RTMP server in Python hosted at Google Code can be used to receive connections and media from the Flash Player application.

P2P-SIP in Python

Implement the current version of IETF P2P-SIP WG internet-draft. You may reuse the core p2p, dht and rfc3261 modules of the 39 peers project. The goal is to implement the core functions that allows incorporating external DHT algorithm, authentication as well as transport. I have a few suggestions to simplify the draft and hence the implementation. Language: Python.