正在显示
4 个修改的文件
包含
104 行增加
和
1 行删除
@@ -15,7 +15,7 @@ step 1: build srs <br/> | @@ -15,7 +15,7 @@ step 1: build srs <br/> | ||
15 | <pre> | 15 | <pre> |
16 | tar xf simple-rtmp-server-*.*.tar.gz | 16 | tar xf simple-rtmp-server-*.*.tar.gz |
17 | cd simple-rtmp-server-*.*/trunk | 17 | cd simple-rtmp-server-*.*/trunk |
18 | -./configure --with-ssl --with-hls --with-ffmpeg | 18 | +./configure --with-ssl --with-hls --with-ffmpeg --with-http |
19 | make | 19 | make |
20 | </pre> | 20 | </pre> |
21 | step 2: start srs <br/> | 21 | step 2: start srs <br/> |
@@ -30,6 +30,10 @@ step 4(optional): start nginx for HLS <br/> | @@ -30,6 +30,10 @@ step 4(optional): start nginx for HLS <br/> | ||
30 | <pre> | 30 | <pre> |
31 | sudo ./objs/nginx/sbin/nginx | 31 | sudo ./objs/nginx/sbin/nginx |
32 | </pre> | 32 | </pre> |
33 | +step 5(optional): start http hooks for srs callback <br/> | ||
34 | +<pre> | ||
35 | +python ./research/api-server/server.py 8085 | ||
36 | +</pre> | ||
33 | step 5: publish live stream <br/> | 37 | step 5: publish live stream <br/> |
34 | <pre> | 38 | <pre> |
35 | FMS URL: rtmp://127.0.0.1:1935/live | 39 | FMS URL: rtmp://127.0.0.1:1935/live |
@@ -87,6 +87,12 @@ vhost dev { | @@ -87,6 +87,12 @@ vhost dev { | ||
87 | hls_window 30; | 87 | hls_window 30; |
88 | #forward 127.0.0.1:19350; | 88 | #forward 127.0.0.1:19350; |
89 | #forward 127.0.0.1:1936; | 89 | #forward 127.0.0.1:1936; |
90 | + on_connect http://127.0.0.1:8085/api/v1/clients; | ||
91 | + on_close http://127.0.0.1:8085/api/v1/clients; | ||
92 | + on_publish http://127.0.0.1:8085/api/v1/streams; | ||
93 | + on_unpublish http://127.0.0.1:8085/api/v1/streams; | ||
94 | + on_play http://127.0.0.1:8085/api/v1/sessions; | ||
95 | + on_stop http://127.0.0.1:8085/api/v1/sessions; | ||
90 | transcode { | 96 | transcode { |
91 | enabled off; | 97 | enabled off; |
92 | ffmpeg ./objs/ffmpeg/bin/ffmpeg; | 98 | ffmpeg ./objs/ffmpeg/bin/ffmpeg; |
@@ -174,4 +174,7 @@ fi | @@ -174,4 +174,7 @@ fi | ||
174 | if [ $SRS_FFMPEG = YES ]; then | 174 | if [ $SRS_FFMPEG = YES ]; then |
175 | echo -e "\" ./objs/ffmpeg/bin/ffmpeg \" is used for live stream transcoding" | 175 | echo -e "\" ./objs/ffmpeg/bin/ffmpeg \" is used for live stream transcoding" |
176 | fi | 176 | fi |
177 | +if [ $SRS_HTTP = YES ]; then | ||
178 | + echo -e "\" python ./research/api-server/server.py 8085 \" to start the api-server" | ||
179 | +fi | ||
177 | echo "\" ./objs/simple_rtmp_server -c conf/srs.conf \" to start the srs live server" | 180 | echo "\" ./objs/simple_rtmp_server -c conf/srs.conf \" to start the srs live server" |
trunk/research/api-server/server.py
0 → 100755
1 | +#!/usr/bin/python | ||
2 | +''' | ||
3 | +The MIT License (MIT) | ||
4 | + | ||
5 | +Copyright (c) 2013 winlin | ||
6 | + | ||
7 | +Permission is hereby granted, free of charge, to any person obtaining a copy of | ||
8 | +this software and associated documentation files (the "Software"), to deal in | ||
9 | +the Software without restriction, including without limitation the rights to | ||
10 | +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of | ||
11 | +the Software, and to permit persons to whom the Software is furnished to do so, | ||
12 | +subject to the following conditions: | ||
13 | + | ||
14 | +The above copyright notice and this permission notice shall be included in all | ||
15 | +copies or substantial portions of the Software. | ||
16 | + | ||
17 | +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
18 | +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS | ||
19 | +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR | ||
20 | +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER | ||
21 | +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||
22 | +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
23 | +''' | ||
24 | + | ||
25 | +""" | ||
26 | +the api-server is a default demo server for srs to call | ||
27 | +when srs get some event, for example, when client connect | ||
28 | +to srs, srs can invoke the http api of the api-server | ||
29 | +""" | ||
30 | + | ||
31 | +import sys; | ||
32 | +# reload sys model to enable the getdefaultencoding method. | ||
33 | +reload(sys); | ||
34 | +# set the default encoding to utf-8 | ||
35 | +# using exec to set the encoding, to avoid error in IDE. | ||
36 | +exec("sys.setdefaultencoding('utf-8')"); | ||
37 | +assert sys.getdefaultencoding().lower() == "utf-8"; | ||
38 | + | ||
39 | +if __name__ != "__main__": | ||
40 | + raise Exception("embed not support"); | ||
41 | + | ||
42 | +if len(sys.argv) <= 1: | ||
43 | + print "SRS api callback server, Copyright (c) 2013 winlin" | ||
44 | + print "Usage: python %s <port>"%(sys.argv[0]) | ||
45 | + print " port: the port to listen at." | ||
46 | + print "For example:" | ||
47 | + print " python %s 8085"%(sys.argv[0]) | ||
48 | + print "" | ||
49 | + print "See also: https://github.com/winlinvip/simple-rtmp-server" | ||
50 | + sys.exit(1) | ||
51 | + | ||
52 | +import datetime, cherrypy | ||
53 | + | ||
54 | +def trace(msg): | ||
55 | + date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") | ||
56 | + print "[%s][trace] %s"%(date, msg) | ||
57 | + | ||
58 | +class RESTClients(object): | ||
59 | + pass; | ||
60 | + | ||
61 | +class Root(object): | ||
62 | + def __init__(self): | ||
63 | + self.api = Api() | ||
64 | + | ||
65 | +class Api(object): | ||
66 | + def __init__(self): | ||
67 | + self.v1 = V1() | ||
68 | + | ||
69 | +class V1(object): | ||
70 | + def __init__(self): | ||
71 | + self.clients = RESTClients() | ||
72 | + | ||
73 | +port = int(sys.argv[1]) | ||
74 | +trace("api server listen at port: %s"%(port)) | ||
75 | + | ||
76 | +conf = { | ||
77 | + 'global': { | ||
78 | + 'server.shutdown_timeout': 1, | ||
79 | + 'server.socket_host': '0.0.0.0', | ||
80 | + 'server.socket_port': port, | ||
81 | + 'tools.encode.on': True, | ||
82 | + 'tools.encode.encoding': "utf-8" | ||
83 | + }, | ||
84 | + '/': { | ||
85 | + 'request.dispatch': cherrypy.dispatch.MethodDispatcher() | ||
86 | + } | ||
87 | +} | ||
88 | + | ||
89 | +trace("start cherrypy server") | ||
90 | +cherrypy.quickstart(Root(), '/', conf) |
-
请 注册 或 登录 后发表评论