Esempio n. 1
0
 def __init__(self, pid, id, connect):
     self.pid = pid
     self.id = id
     self.connect = connect
     candidate = farsight.Candidate()
     candidate.component_id = 1
     connect.send_candidate(self.pid, self.id, candidate)
     connect.send_candidates_done(self.pid, self.id)
Esempio n. 2
0
 def __candidate_from_string(self, string):
     candidate = farsight.Candidate()
     (candidate.foundation, component_id, candidate.ip, port,
      candidate.base_ip, base_port, proto, priority, type,
      candidate.username, candidate.password) = string.split("|")
     candidate.component_id = int(component_id)
     candidate.port = int(port)
     candidate.base_port = int(base_port)
     candidate.proto = int(proto)
     candidate.priority = int(priority)
     candidate.type = int(type)
     return candidate
Esempio n. 3
0
 def new_stream(self, id, participant):
     "Creates a new stream for a specific participant"
     transmitter_params = {}
     # If its video, we start at port 9078, to make it more easy
     # to differentiate it in a tcpdump log
     if self.source.get_type() == farsight.MEDIA_TYPE_VIDEO and \
            TRANSMITTER == "rawudp":
         cand = farsight.Candidate()
         cand.component_id = farsight.COMPONENT_RTP
         cand.port = 9078
         transmitter_params["preferred-local-candidates"] = [cand]
     realstream = self.fssession.new_stream(participant.fsparticipant,
                                          farsight.DIRECTION_BOTH,
                                          TRANSMITTER, transmitter_params)
     stream = FsUIStream(id, self, participant, realstream)
     self.streams.append(weakref.ref(stream, self.__stream_finalized))
     return stream
Esempio n. 4
0
def convert_media_candidates(candidates):
    fscandidates = []
    for candidate in candidates:
        for k, v in protos.iteritems():
            if v == candidate.transport:
                proto = k
        type = 0
        for k, v in types.iteritems():
            if v == candidate.type:
                type = k
        fscandidate = farsight.Candidate()
        fscandidate.foundation = candidate.foundation
        fscandidate.ip = candidate.ip
        fscandidate.port = candidate.port
        fscandidate.component_id = candidate.component_id
        fscandidate.proto = proto
        fscandidate.type = type
        fscandidate.username = candidate.username
        fscandidate.password = candidate.password
        fscandidate.priority = int(candidate.priority)
        fscandidates.append(fscandidate)
    return fscandidates
Esempio n. 5
0
loop = gobject.MainLoop()
pipeline = gst.Pipeline()

conference = gst.element_factory_make ("fsrtpconference")
conference.set_property ("sdes-cname", sys.argv[1] + "@1.2.3.4")
pipeline.add (conference)

session = conference.new_session (farsight.MEDIA_TYPE_VIDEO)
participant = conference.new_participant (sys.argv[2]+"@1.2.3.4")
stream = session.new_stream (participant, farsight.DIRECTION_BOTH, "multicast")

stream.set_remote_codecs([farsight.Codec(96, "H263-1998",
                                         farsight.MEDIA_TYPE_VIDEO,
                                         90000)])
candidate = farsight.Candidate()
candidate.ip = "224.0.0.110"
candidate.port = 3442
candidate.component_id = farsight.COMPONENT_RTP
candidate.proto = farsight.NETWORK_PROTOCOL_UDP
candidate.type = farsight.CANDIDATE_TYPE_MULTICAST
candidate.ttl = 1

candidate2 = candidate.copy()
candidate2.port = 3443
candidate2.component_id = farsight.COMPONENT_RTCP
stream.set_remote_candidates ([candidate, candidate2])

videosource = gst.parse_bin_from_description (sys.argv[3] + " ! videoscale", True)
pipeline.add (videosource)
videosource.get_pad ("src").link(session.get_property ("sink-pad"))