rtmpd overview
rtmpd is a BSD licensed daemon for Real Time Messaging Protocol. Applications for it are compiled as DSO files and loaded at the runtime, similar to Apache modules.
Visit the project web page at sf.net.
To check out the latest version please try:
cvs -d :pserver:rtmpd.cvs.sf.net:/cvsroot/rtmpd co -PA rtmpd
Eventual warnings about the missing .cvspass file can be ignored. If you are behind a corporate proxy, you can try adding the following to your ~/.ssh/config file:
host rtmpd.cvs.sf.net
ProxyCommand "$HOME/bin/connect" -H your.web.proxy:8080 %h 443
Or just browse the CVS repository.
Coding guidelines
- TAILQ_, RB_ and other macros should be used for data structures and trees.
- Only strlcpy() and strlcat() should be used.
- Let's not optimize too much at the beginning and just use malloc() and free().
- At any point the source code should be compilable and daemon shouldn't crash, do not check in otherwise.
- For non-OpenBSD systems the source files are provided in the openbsd-compat directory (scavenge from the OpenSSH-portable source code).
- Drop superuser privilleges early.
- poll() non-blocking sockets, so that one slow client can't throttle other clients. Send the outgoing data by writev().
- Red5 source code is used as protocol and API reference.
Project targets
- Protocol handshake with a Flash Player, so that it stays idle and doesn't disconnect
- Implement publish() and play(), so that webcam video and sound can be streamed to rtmpd and back to the players
- Implement connect() arguments and referrer, so that authentification against a database would be possible
- Loading DSO files (look them up in Apache and apxs)
- Create MinGW port in order to have a standalone Windows binary (use select() instead of poll(), call WSAStartup() etc.)
Developers
Alexander Farber (looking for a job as Perl/C developer starting Sep. 2008)
$Id: index.html,v 1.9 2008/01/24 10:31:11 afarber Exp $