Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在多客户端语音聊天Python程序中没有向客户端发送音频 我想做什么_Python_Multithreading_Sockets_Audio_Udp - Fatal编程技术网

在多客户端语音聊天Python程序中没有向客户端发送音频 我想做什么

在多客户端语音聊天Python程序中没有向客户端发送音频 我想做什么,python,multithreading,sockets,audio,udp,Python,Multithreading,Sockets,Audio,Udp,我正在尝试用Python创建一个多客户端语音聊天程序,客户端可以通过麦克风进行通信。我让它与TCP套接字一起工作,客户端将启动与服务器的连接,并将添加到列表中,然后在其中接收音频。由于性能原因,我尝试使用UDP套接字来实现这一点。事实证明,这很困难 预期和实际结果 当程序运行时,服务器等待客户机发送“连接”字符串,然后将该客户机的地址添加到列表中,启动一个线程从中接收音频,并将音频广播到所有连接的客户机。然而,发生的情况是,客户端似乎没有从服务器接收任何音频。当混音器拾取输入时,代码的音频部分似

我正在尝试用Python创建一个多客户端语音聊天程序,客户端可以通过麦克风进行通信。我让它与TCP套接字一起工作,客户端将启动与服务器的连接,并将添加到列表中,然后在其中接收音频。由于性能原因,我尝试使用UDP套接字来实现这一点。事实证明,这很困难

预期和实际结果 当程序运行时,服务器等待客户机发送“连接”字符串,然后将该客户机的地址添加到列表中,启动一个线程从中接收音频,并将音频广播到所有连接的客户机。然而,发生的情况是,客户端似乎没有从服务器接收任何音频。当混音器拾取输入时,代码的音频部分似乎很好,但是没有接收到输出

错误消息 没有

代码 server.py client.py 有谁能提出一些建议来解释为什么这个代码不起作用? 谢谢

import time
import sys
import threading
import chardet

print("\nWelcome to cmd-chat server!\n")
print("[LOADING]")
time.sleep(1)

host = "127.0.0.1"
port = 55556

users = []
nicknames = []

s1 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s1.bind((host, port))


def managevoice(addr):
    while True:
            print("managvoicestarted")
            voicedata, ad  = s1.recvfrom(4096)
            the_encoding = chardet.detect(voicedata)["encoding"]
            if the_encoding != "ascii" and ad == addr:
                    for c in users:
                        if c != addr:
                            s1.sendto(voicedata, c)


def recieveclients():
    while True:
        data, addr = s1.recvfrom(4096)
        the_encoding = chardet.detect(data)["encoding"]
        if the_encoding == "ascii":
           data = data.decode()
        if data == "JOIN":
                users.append(addr)
                t2 = threading.Thread(target=managevoice, args=(addr,))
                t2.start()
                print("Thread Started")
recieveclients()
import time
import sys
import threading
import pyaudio



host = "127.0.0.1"
port = 55556



s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
Message = "JOIN".encode()
s.sendto(Message, (host, port))


p = pyaudio.PyAudio()

fl = pyaudio.paInt16
ch = 1
size = 4096
r = 44100

input_stream = p.open(format = fl,
            channels = ch,
            rate = r,
            input = True,
            frames_per_buffer = size)

output_stream = p.open(format = fl,
                      channels = ch,
                      rate = r,
                      output = True,
                      frames_per_buffer = size)

def send_audio():
    while True:
            voice = input_stream.read(4096)
            s.sendto(voice, (host, port))
            print("sending")

def play_audio():
    while True:
            audio, addr = s.recvfrom(4096)
            output_stream.write(audio)

t3 = threading.Thread(target=send_audio)
t4 = threading.Thread(target=play_audio)

t3.start()
t4.start()