New RTMFP library implementation

239 views
Skip to first unread message

Thomas Jammet

unread,
Mar 17, 2021, 5:27:57 AM3/17/21
to MonaServer
Hi everyone!

There is a new implementation of RTMFP available here :

It is written by Michael Thornburgh, the co-designer of RTMFP and it abstracts all the socket layer (can run over UDP, TCP or anything else) and the encryption part. It will allow to write server and client applications.

This is a beta version but it works already, give it a try when you have time!

We wish long life to this new project!

Gennaro Graziano

unread,
Mar 23, 2021, 10:12:44 AM3/23/21
to MonaServer
HI! How to install?

Michael Thornburgh

unread,
Mar 25, 2021, 6:12:31 PM3/25/21
to MonaServer
note that this library has a new API and isn't a drop-in replacement for any other implementation of RTMFP in any existing project. it's intended to be a complete and correct implementation of RFC 7016 and the lower-layer parts of RFC 7425.

if you have the prerequisite (OpenSSL), you can clone the repo and just type "make". you'll be left with librtmfp.a, and all the needed include files are in the include/ directory. a CMakeLists.txt is on To Do list to make it easier to include in other projects.  :)  see the README.md file for what to do if you don't have (or don't want to use) OpenSSL.

there are several examples and testing toys in the test/ directory. of particular note in that directory are "echoserver" and "rtclient", which can talk to each other. more examples are coming as my nights and weekends permit.

for any other questions on this library, i enabled GitHub Discussions on the repo. feel free to ask any questions there. i'm monitoring.

-michael thornburgh

Michael Thornburgh

unread,
Jun 18, 2021, 7:58:23 PM6/18/21
to MonaServer
For those following or curious: the project now includes an RTMP↔︎RTMFP relay/proxy/translator, "tcrelay", in the test directory. It can accept RTMP or RTMFP incoming connections, and make outgoing RTMP or RTMFP connections. It will give real-time treatments to any media it sends (prioritization, transmission deadlines, and independent video and audio frame dropping) on either RTMFP or RTMP. And for RTMFP you can enable a lower-latency "request ASAP receive" partial ordering mode at the sender (and control the reordering window at the receiver).

This tool can be used to let anything that can do RTMP also do RTMFP (in or out), or even just to give real-time treatments to RTMP.

For compatibility with incomplete or buggy RTMP implementations, it can optionally use a simplified version of RTMP (no message interleaving and only using Type-0 chunks).

If talking regular RTMP to an endpoint that doesn't understand the "Abort Message" protocol control message (control message type 2), set the "finish-by margin" to a high value (like 3600).

MonaServer

unread,
Jun 24, 2021, 2:34:16 AM6/24/21
to MonaServer
Thank you Michael for your hard work!
Reply all
Reply to author
Forward
0 new messages