mod_rtmp
About
mod_rtmp is an RTMP (Real time media protocol) endpoint for FreeSWITCH (similar to mod_sofia for example). The RTMP protocol is primarily used by Flash for streaming audio, video, and data over the Internet. The proliferation of WebRTC media streaming has largely supplanted the use of RTMP.
Click here to expand Table of Contents
- 1 Installation
- 2 Configuration
- 3 API
- 4 Latency
- 5 Flex Client
Installation
The lastest git for FreeSWITCH already have mod_rtmp source included. Before compilation, edit modules.conf. Uncomment "endpoints/mod_rtmp" and save the file. Run your FreeSWITCH compilation like you would normally do.
Configuration
RTMP Configuration Files, rtmp.conf.xml
API
Status
To view the endpoint status:
freeswitch> rtmp status
To view the status of a profile:
freeswitch> rtmp status profile <profile>
To view sessions on a profile:
freeswitch> rtmp status profile <profile> sessions
To view registrations on a profile:
freeswitch> rtmp status profile <profile> reg
Profiles
To start, stop or restart a profile:
freeswitch> rtmp profile <profile> start freeswitch> rtmp profile <profile> stop freeswitch> rtmp profile <profile> restart
To rescan the configuration for a profile:
freeswitch> rtmp profile <profile> rescan
Sessions
To kill a session:
freeswitch> rtmp session <session> kill
To login or logout a session:
freeswitch> rtmp session <session> login freeswitch> rtmp session <session> logout
Contact
To get a dialstring to call a registered user (optionally with nickname):
rtmp_contact profile/user@domain[/[!]nickname]
This can be used to bridge a call to the user:
<action application="bridge" data="${rtmp_contact($${rtmp_profile}/${dialed_ext}@$${domain})}"/>
Latency
If you experience latency when receiving streamed audio through Flash, first check the latency isn't generated through Flash's interaction with your browser and audio system. For example on some Linux distributions which use PulseAudio you may find executing the following command in a desktop terminal window has a great effect on reducing latency for the current session:
\export PULSE_LATENCY_MSEC=20 /usr/bin/firefox "$@"
Flex Client
There is also a sample flex client that works with mod_rtmp. The source is currently located right under the /usr/src/freeswitch/clients/flex. You need to copy those files and put it under a web server directory. Modify the freeswitch.html file and modify the following section:
var flashvars = {
rtmp_url: 'rtmp://my.ip.address.here/phone'
};
replace my.ip.address.here to your freeswitch server IP running the mod_rtmp module. Now open your browser and load the freeswitch.html page to see the client in action.