-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.py
107 lines (88 loc) · 3.08 KB
/
server.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import tornado.web
import os
import sys
import subprocess
import tornado.options
import tornado.httpserver
import tornado.ioloop
import os.path
from tornado.options import define,options
define("port", default=8987, help="run on th given port", type=int)
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render("index.html")
class VideoHandler(tornado.web.RequestHandler):
def get(self):
self.render("video.html")
class FfmpegGetHandler(tornado.web.RequestHandler):
def get(self):
self.render("ffmpeg.html")
class DiffHandler(tornado.web.RequestHandler):
def get(self):
self.render("diff.html")
class PixiHandler(tornado.web.RequestHandler):
def get(self):
self.render("pixi.html")
class EaseljsHandler(tornado.web.RequestHandler):
def get(self):
self.render("easeljs.html")
class MediaElementPlayerHandler(tornado.web.RequestHandler):
def get(self):
self.render("mediaelement.html")
class me2Handler(tornado.web.RequestHandler):
def get(self):
self.render("me2.html")
class videojsHandler(tornado.web.RequestHandler):
def get(self):
self.render("videojs.html")
class FfmpegPostHandler(tornado.web.RequestHandler):
def post(self):
m3u8 = self.get_argument('data')
# log = os.system('ffmpeg -i ' + m3u8)
log = subprocess.Popen('ffmpeg -i ' + m3u8, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
result = log.communicate()
# result = log.stdout.read().decode('utf8')
# result.terminate();
# print result
print result
# result.kill()
data = {"no": 0, "data": result[1]}
self.write(data)
class FlowPlayerHandler(tornado.web.RequestHandler):
def get(self):
self.render("flowplayer.html");
class ResolutionHandler(tornado.web.RequestHandler):
def get(self):
self.render("resolution.html");
class HlsHandler(tornado.web.RequestHandler):
def get(self):
self.redirect('http://tieba.pics:9090/example.html');
handlers = [
(r"/", MainHandler),
(r"/video", VideoHandler),
(r"/ffmpeg", FfmpegGetHandler),
(r"/m3u8", FfmpegPostHandler),
(r"/diff", DiffHandler),
(r"/flow", FlowPlayerHandler),
(r"/pixi", PixiHandler),
(r"/easeljs", EaseljsHandler),
(r"/mediaelement", MediaElementPlayerHandler),
(r"/me2", me2Handler),
(r"/videojs", videojsHandler),
(r"/resolution", ResolutionHandler),
(r"/hls", HlsHandler),
]
settings = {
"static_path": os.path.join(os.path.dirname(__file__), "static"),
"template_path": os.path.join(os.path.dirname(__file__), "template"),
"debug": True
}
def make_app():
tornado.options.parse_command_line()
return tornado.web.Application(handlers, **settings)
if __name__ == "__main__":
app = make_app()
app.listen(options.port)
print 'Development server is running at http://0.0.0.0:%s/' % options.port
print 'Quit the server with Control-C'
tornado.ioloop.IOLoop.current().start()