5 # Author: Cyril Deguet <asmax@via.ecp.fr>
8 import cfg, random, time
10 from streamer import VlcError, VlcStreamer
16 def __init__(self, id, uri, dest):
21 media = cfg.playlist.getMedia(self.uri)
22 self.fileName = media['file']
23 self.name = media['name']
24 address = "rtp/ts://" + dest
25 self.streamer = VlcStreamer(self.fileName, address)
29 if self.state == 'playing':
30 print "Session " + self.id + " (" + self.fileName + "): already playing"
32 self.state = 'playing'
33 print "Session " + self.id + " (" + self.fileName + "): play"
37 print "Streamer: play failed"
39 cfg.announceList.addMulticastSession(self)
44 print "Session " + self.id + " (" + self.fileName + "): pause"
49 print "Streamer: pause failed"
55 print "Session " + self.id + " (" + self.fileName + "): stop"
59 print "Streamer: stop failed"
66 "Manages RTSP sessions"
69 chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
72 self.rand = random.Random(time.time())
74 def newSessionId(self):
75 "Build a random session id"
78 id += self.chars[self.rand.randrange(0, len(self.chars), 1)]
81 def newSession(self, uri, dest):
82 "Create a new RTSP session"
83 id = self.newSessionId()
84 while self.list.has_key(id):
85 id = self.newSessionId()
87 session = Session(id, uri, dest)
89 print "Streamer: creation failed"
91 self.list[id] = session
92 print "New session: " + id
95 def getSession(self, id):
96 "Get a session from its session id"
97 if self.list.has_key(id):
102 def delSession(self, id):
104 if self.list.has_key(id):