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())
# 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
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
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)