mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
add cherrypy api server
This commit is contained in:
parent
b29d7ccd56
commit
d3cee00b3b
4 changed files with 104 additions and 1 deletions
|
@ -15,7 +15,7 @@ step 1: build srs <br/>
|
||||||
<pre>
|
<pre>
|
||||||
tar xf simple-rtmp-server-*.*.tar.gz
|
tar xf simple-rtmp-server-*.*.tar.gz
|
||||||
cd simple-rtmp-server-*.*/trunk
|
cd simple-rtmp-server-*.*/trunk
|
||||||
./configure --with-ssl --with-hls --with-ffmpeg
|
./configure --with-ssl --with-hls --with-ffmpeg --with-http
|
||||||
make
|
make
|
||||||
</pre>
|
</pre>
|
||||||
step 2: start srs <br/>
|
step 2: start srs <br/>
|
||||||
|
@ -30,6 +30,10 @@ step 4(optional): start nginx for HLS <br/>
|
||||||
<pre>
|
<pre>
|
||||||
sudo ./objs/nginx/sbin/nginx
|
sudo ./objs/nginx/sbin/nginx
|
||||||
</pre>
|
</pre>
|
||||||
|
step 5(optional): start http hooks for srs callback <br/>
|
||||||
|
<pre>
|
||||||
|
python ./research/api-server/server.py 8085
|
||||||
|
</pre>
|
||||||
step 5: publish live stream <br/>
|
step 5: publish live stream <br/>
|
||||||
<pre>
|
<pre>
|
||||||
FMS URL: rtmp://127.0.0.1:1935/live
|
FMS URL: rtmp://127.0.0.1:1935/live
|
||||||
|
|
|
@ -87,6 +87,12 @@ vhost dev {
|
||||||
hls_window 30;
|
hls_window 30;
|
||||||
#forward 127.0.0.1:19350;
|
#forward 127.0.0.1:19350;
|
||||||
#forward 127.0.0.1:1936;
|
#forward 127.0.0.1:1936;
|
||||||
|
on_connect http://127.0.0.1:8085/api/v1/clients;
|
||||||
|
on_close http://127.0.0.1:8085/api/v1/clients;
|
||||||
|
on_publish http://127.0.0.1:8085/api/v1/streams;
|
||||||
|
on_unpublish http://127.0.0.1:8085/api/v1/streams;
|
||||||
|
on_play http://127.0.0.1:8085/api/v1/sessions;
|
||||||
|
on_stop http://127.0.0.1:8085/api/v1/sessions;
|
||||||
transcode {
|
transcode {
|
||||||
enabled off;
|
enabled off;
|
||||||
ffmpeg ./objs/ffmpeg/bin/ffmpeg;
|
ffmpeg ./objs/ffmpeg/bin/ffmpeg;
|
||||||
|
|
3
trunk/configure
vendored
3
trunk/configure
vendored
|
@ -174,4 +174,7 @@ fi
|
||||||
if [ $SRS_FFMPEG = YES ]; then
|
if [ $SRS_FFMPEG = YES ]; then
|
||||||
echo -e "\" ./objs/ffmpeg/bin/ffmpeg \" is used for live stream transcoding"
|
echo -e "\" ./objs/ffmpeg/bin/ffmpeg \" is used for live stream transcoding"
|
||||||
fi
|
fi
|
||||||
|
if [ $SRS_HTTP = YES ]; then
|
||||||
|
echo -e "\" python ./research/api-server/server.py 8085 \" to start the api-server"
|
||||||
|
fi
|
||||||
echo "\" ./objs/simple_rtmp_server -c conf/srs.conf \" to start the srs live server"
|
echo "\" ./objs/simple_rtmp_server -c conf/srs.conf \" to start the srs live server"
|
||||||
|
|
90
trunk/research/api-server/server.py
Executable file
90
trunk/research/api-server/server.py
Executable file
|
@ -0,0 +1,90 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
'''
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2013 winlin
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
'''
|
||||||
|
|
||||||
|
"""
|
||||||
|
the api-server is a default demo server for srs to call
|
||||||
|
when srs get some event, for example, when client connect
|
||||||
|
to srs, srs can invoke the http api of the api-server
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sys;
|
||||||
|
# reload sys model to enable the getdefaultencoding method.
|
||||||
|
reload(sys);
|
||||||
|
# set the default encoding to utf-8
|
||||||
|
# using exec to set the encoding, to avoid error in IDE.
|
||||||
|
exec("sys.setdefaultencoding('utf-8')");
|
||||||
|
assert sys.getdefaultencoding().lower() == "utf-8";
|
||||||
|
|
||||||
|
if __name__ != "__main__":
|
||||||
|
raise Exception("embed not support");
|
||||||
|
|
||||||
|
if len(sys.argv) <= 1:
|
||||||
|
print "SRS api callback server, Copyright (c) 2013 winlin"
|
||||||
|
print "Usage: python %s <port>"%(sys.argv[0])
|
||||||
|
print " port: the port to listen at."
|
||||||
|
print "For example:"
|
||||||
|
print " python %s 8085"%(sys.argv[0])
|
||||||
|
print ""
|
||||||
|
print "See also: https://github.com/winlinvip/simple-rtmp-server"
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
import datetime, cherrypy
|
||||||
|
|
||||||
|
def trace(msg):
|
||||||
|
date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
print "[%s][trace] %s"%(date, msg)
|
||||||
|
|
||||||
|
class RESTClients(object):
|
||||||
|
pass;
|
||||||
|
|
||||||
|
class Root(object):
|
||||||
|
def __init__(self):
|
||||||
|
self.api = Api()
|
||||||
|
|
||||||
|
class Api(object):
|
||||||
|
def __init__(self):
|
||||||
|
self.v1 = V1()
|
||||||
|
|
||||||
|
class V1(object):
|
||||||
|
def __init__(self):
|
||||||
|
self.clients = RESTClients()
|
||||||
|
|
||||||
|
port = int(sys.argv[1])
|
||||||
|
trace("api server listen at port: %s"%(port))
|
||||||
|
|
||||||
|
conf = {
|
||||||
|
'global': {
|
||||||
|
'server.shutdown_timeout': 1,
|
||||||
|
'server.socket_host': '0.0.0.0',
|
||||||
|
'server.socket_port': port,
|
||||||
|
'tools.encode.on': True,
|
||||||
|
'tools.encode.encoding': "utf-8"
|
||||||
|
},
|
||||||
|
'/': {
|
||||||
|
'request.dispatch': cherrypy.dispatch.MethodDispatcher()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
trace("start cherrypy server")
|
||||||
|
cherrypy.quickstart(Root(), '/', conf)
|
Loading…
Add table
Add a link
Reference in a new issue