5 # Author: Cyril Deguet <asmax@via.ecp.fr>
8 import cfg,socket,struct,time,threading
12 "Return the current time in NTP decimal format"
13 return "%d" % (int(time.time()) + 2208988800L)
20 uri = "http://www.videolan.org/"
22 def __init__(self, sessionName, address, uri):
24 self.sessionName = sessionName
25 self.address = address
29 "Return the SDP message"
31 "o=asmax " + ntpTime() + " " + ntpTime() + \
32 " IN IP4 sphinx.via.ecp.fr\r\n" + \
33 "s=" + self.sessionName + "\r\n" + \
34 "u=" + self.uri + "\r\n" + \
36 "c=IN IP4 " + self.address + "/1\r\n" + \
37 "m=video 1234 RTP/MP2T 33\r\n" + \
38 "a=control:" + self.uri + "\r\n"
43 class SapServer(threading.Thread):
47 GROUP = "224.2.127.254"
52 self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
53 self.sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, self.TTL)
54 self.sock.connect((self.GROUP, self.PORT))
56 def sendMessage(self, message):
57 "Message must be a SdpMessage"
59 header = " " + struct.pack("!BH", 12, 4212) + socket.inet_aton('138.195.156.214')
60 data = header + message.getMessage()
64 for id, session in cfg.announceList.multicastList.items():
65 message = SdpMessage(session.name, session.dest, session.uri)
66 self.sendMessage(message)