Beispiel #1
0
 def webrtc_handler(self):
     signaling = ApprtcSignaling(self.room)
     pc = RTCPeerConnection()
     loop = asyncio.new_event_loop()
     try:
         loop.run_until_complete(self.run(pc, signaling))
     except KeyboardInterrupt:
         pass
     finally:
         loop.run_until_complete(pc.close())
         loop.run_until_complete(signaling.close())
Beispiel #2
0
                # send answer
                add_tracks()
                await pc.setLocalDescription(await pc.createAnswer())
                await signaling.send(pc.localDescription)
        elif isinstance(obj, RTCIceCandidate):
            await pc.addIceCandidate(obj)
        elif obj is BYE:
            print("Exiting")
            break


if __name__ == "__main__":
    room = "".join([random.choice("0123456789") for x in range(10)])
    # room = input("输入房间号:")
    urls = "https://wangxin1210.xyz"
    signaling = ApprtcSignaling(room)
    signaling._origin = urls

    config = RTCConfiguration([
        RTCIceServer("turn:42.194.190.40:3478",
                     username='******',
                     credential='926492',
                     credentialType='password')
    ])
    pc = RTCPeerConnection(configuration=config)
    recorder = MediaBlackhole()
    loop = asyncio.get_event_loop()
    try:
        loop.run_until_complete(run(pc, recorder, signaling))
    except KeyboardInterrupt:
        pass
Beispiel #3
0
            break


if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="AppRTC")
    parser.add_argument("room", nargs="?")
    parser.add_argument("--play-from",
                        help="Read the media from a file and sent it."),
    parser.add_argument("--record-to", help="Write received media to a file."),
    parser.add_argument("--verbose", "-v", action="count")
    args = parser.parse_args()

    args.room = "".join([random.choice("0123456789") for x in range(10)])

    # create signaling and peer connection
    signaling = ApprtcSignaling(args.room)
    pc = RTCPeerConnection()

    # create media sink
    if args.record_to:
        recorder = MediaRecorder(args.record_to)
    else:
        recorder = MediaBlackhole()

    # run event loop
    loop = asyncio.get_event_loop()
    try:
        loop.run_until_complete(
            run(pc=pc, player=player, recorder=recorder, signaling=signaling))
    except KeyboardInterrupt:
        pass
Beispiel #4
0
    parser.add_argument("room", nargs="?")
    parser.add_argument("--play-from",
                        help="Read the media from a file and sent it."),
    parser.add_argument("--record-to", help="Write received media to a file."),
    parser.add_argument("--verbose", "-v", action="count")
    parser.add_argument("--server", help="https://your.appr.tc")
    args = parser.parse_args()

    if not args.room:
        args.room = "".join([random.choice("0123456789") for x in range(10)])

    if args.verbose:
        logging.basicConfig(level=logging.DEBUG)

    # create signaling and peer connection
    signaling = ApprtcSignaling(args.room)
    signaling._origin = args.server
    pc = RTCPeerConnection()

    # create media source
    if args.play_from:
        player = MediaPlayer(args.play_from)
    else:
        #player = None
        options = {"framerate": "10", "video_size": "320x240"}
        if platform.system() == "Darwin":
            player = MediaPlayer("default:none",
                                 format="avfoundation",
                                 options=options)
        else:
            player = MediaPlayer("/dev/video0", format="v4l2", options=options)
            # command = "youtube-dl -f 'bestvideo' -g '"+videoUrl+"'"
            videoUrl = subprocess.check_output(
                command, shell=True).decode("utf-8").strip()
            args.play_from = videoUrl
        elif "direct" == videoUrl:
            skipFrames = True
        else:
            args.play_from = videoUrl
    else:
        skipFrames = True

    print('videoUrl=', videoUrl)

    # create signaling and peer connection
    # signaling = RaceOssdcSignaling(args.room)
    signaling = ApprtcSignaling(args.room)

    configuration = RTCConfiguration()

    stunServer = RTCIceServer("stun:race.ossdc.org:5349")

    turnServer = RTCIceServer("turn:race.ossdc.org:5349")
    # url: 'turn:race.ossdc.org:5349',
    turnServer.username = "******"
    turnServer.credential = roomName

    configuration.iceServers = []
    configuration.iceServers.append(stunServer)
    #configuration.iceServers.append(turnServer)

    pc = RTCPeerConnection(configuration=configuration)