使用peerjs和python用户的对等客户端

2024-10-02 12:29:22 发布

您现在位置:Python中文网/ 问答频道 /正文

  1. 在htdocs文件夹中下载并取消订阅this file(例如C:/xampp/htdocs/telephone_calls)

  2. 运行此ngrok命令:ngrok http192.168.1.24:80(将192.168.1.24替换为lan ip地址)

  3. 将文件manage_calls.py的第118行和第119行替换为您自己的

  4. cd到telephone_calls目录并运行python manage_calls.py

  5. 使用另一台设备打开浏览器并转到https://25f4a7e689ce.ngrok.io/telephone_calls/client.html(将25f4a7e689ce替换为您自己的)

  6. 按下蓝色按钮“θηλεφωνικικοινωνία”。执行此操作后,您将在运行manage_calls.py文件的计算机中听到铃声,并会出现一个按钮

  7. 如果您按下第一台电脑上的应答呼叫1按钮,两台电脑之间将建立音频连接

文件server.html中的代码:

var recorder_1 = new MediaRecorder(remoteStream);
                            
                            recorder_1.ondataavailable = event => {

                                // get the Blob from the event
                                var blob = event.data;
                        
                        
                                blob.arrayBuffer().then(blob_buffer => {
                                    audio_data = new Uint8Array(blob_buffer)
                                    handler.send_call_1_data(audio_data);
                                });
                                
                            };

                            // make data available event fire every ten milliseconds
                            recorder_1.start(200);

文件manage_calls.py中的代码

@pyqtSlot(QVariant,result=QVariant) 
def send_call_1_data(self,Call1BufferArray):
    Call1BufferArray = list(Call1BufferArray)
    #print(Call1BufferArray)
    blob_bytes = b""
    for i in Call1BufferArray:
        blob_bytes = blob_bytes+int(i).to_bytes(8, 'little')
    
    #print(blob_bytes)
    self.call_1_data.setData(blob_bytes)
    if(self.call_1_decoded_start==False):
        self.call_1_decoded_start=True
        self.decoder_1 = QtMultimedia.QAudioDecoder()
        self.decoder_1.bufferReady.connect(self.readBuffer_1)
        self.decoder_1.setAudioFormat(self.desiredFormat)
        self.decoder_1.setSourceDevice(self.call_1_data)    
        #self.decoder_1.start()
    return "ok"

错误是:QBuffer::setData: Buffer is open。 我不知道我的解码是否正确。 有人能帮我吗


Tags: 文件pyselfeventdatabytesmanagecall

热门问题