got_packet() # do some stuff with data maybe before sticking it into playback_queue timestamp = get_timestamp(data) frame = numpy.fromstring(data[4:], dtype = dtype) BUFFER[timestamp, :] = frame HAVE_BUFFER[timestamp] = True print 'got frame of len ', len(data) print 'timestamp is ', timestamp except: traceback.print_exc() t = threading.Thread(target = forever_receive_from_udp) t.setDaemon(True) t.start() playback_stream = OutputStream(samplerate=8000, blocksize=800, dtype='int32', channels=1) playback_stream.start() playback_queue = Queue() def forever_write_to_output(): while True: try: playback_stream.write(playback_queue.get()) except: traceback.print_exc() t = threading.Thread(target = forever_write_to_output) t.setDaemon(True) t.start() # now write something which receives udp packets and sticks
timestamp = get_timestamp(data) frame = numpy.fromstring(data[4:], dtype=dtype) BUFFER[timestamp, :] = frame HAVE_BUFFER[timestamp] = True print 'got frame of len ', len(data) print 'timestamp is ', timestamp except: traceback.print_exc() t = threading.Thread(target=forever_receive_from_udp) t.setDaemon(True) t.start() playback_stream = OutputStream(samplerate=8000, blocksize=800, dtype='int32', channels=1) playback_stream.start() playback_queue = Queue() def forever_write_to_output(): while True: try: playback_stream.write(playback_queue.get()) except: traceback.print_exc() t = threading.Thread(target=forever_write_to_output) t.setDaemon(True)
play audio frames on callback pysoundcard server which forwards all udp packets from one ip, port to everyone connected to it via udp erasure codes later if time permits ''' from pysoundcard import InputStream, OutputStream, continue_flag import time """Loop back five seconds of audio data.""" output = OutputStream(samplerate=44100, blocksize=16) output.start() def callback(in_data, time_info, status): output.write(in_data*4) return continue_flag s = InputStream(samplerate=44100, blocksize=16, callback=callback) s.start() time.sleep(5) s.stop() output.stop()