Open SakiBiAnNya opened 2 months ago
@SakiBiAnNya Yes, I understand the problem. I will fix it in the next release (sometime next week).
@SakiBiAnNya I apologize for such a long fix. There was a lot of work, and I almost completely redesigned the project. Try the current version (0.3.0). It should resolve your issue, but if it doesn't, I've included an option to select a custom encoding, which you can specify at startup, or you can disable encoding translation altogether (but in this case, audio devices might be displayed incorrectly in the console).
Thank you for fixing it, but when I tried, it seems like it's unable to connect to the virtual private IP assigned by my virtual networking software. I've confirmed that the firewall is allowing it through, and my Moonlight can connect to the host via IP address 10.6.22.2. On my host side, the IP is 10.6.22.2, and on the client side, it's 10.6.22.3. On the client side, I've already set up the EchoWarp service and it's waiting for the host to connect so that I can use the client's microphone.
Log: Select id of founded config files:
[2024-06-01 09:27:38] CRITICAL | module: main | funcName: main | An error occurred: [WinError 10049] 在其上下文中,该请 求的地址无效。
Traceback (most recent call last): File "main.py", line 70, in main File "main.py", line 50, in run_app File "streamer\audio_client.py", line 31, in init File "auth_and_heartbeat\transport_client.py", line 32, in init
OSError: [WinError 10049] 在其上下文中,该请求的地址无效。
Press Enter to exit...
Config: [echowarp_conf] is_server=False is_input_audio_device=False device_id=7 ignore_device_encoding_names=True is_error_log=True server_address=10.6.22.3
Select id of founded config files:
Select id of error file logger switcher:
@SakiBiAnNya I think the problem lies in the incorrect use of the utility. I will update the README.md later to clarify this. The utility instance needs to be run both on the client and the server, with the server being started first. If the client cannot connect to the server, it will give an error, which seems to be the case here. The server is the host where the audio stream will be captured (in your case, the microphone, and this host with Moonlight). The client is the host where the captured audio stream from the server will be transmitted over the network (i.e., the host with Sunshine/Nvidia GameStream). Also, in interactive mode (where it offers a choice of values), you do not need to manually enter the default values. Simply leave the input field empty and press Enter, and it will automatically accept the default value.
P.S. Also, possibly check the firewall, as the utility uses two ports. UDP (for audio streaming) and TCP (for authentication/configuration exchange and connection status checking). If you specify port 4415 for UDP in the settings, then port 4414 (-1) will be used for TCP.
On my host side, the IP is 10.6.22.2, and on the client side, it's 10.6.22.3 Config: [echowarp_conf] is_server=False is_input_audio_device=False device_id=7 ignore_device_encoding_names=True is_error_log=True server_address=10.6.22.3
Change server address in config. (server_address=10.6.22.2)
@SakiBiAnNya It's worked?
@SakiBiAnNya It's worked?
Sorry, I've been busy lately. I'll test tomorrow
@SakiBiAnNya It's worked? It still doesn't work. My firewall has added UDP 4415 and TCP 4414 ports for clearance. And isn't the party being used the host side? My Moonlight client has created the EchoWarp capture microphone sound stream service, but my Sunshine host cannot connect to it
/10.6.22.1 to 10.6.22.3/
Select server host: 10.6.22.3 [2024-06-04 19:13:46] INFO | module: audio_device | funcName: __print_list_of_audio_devices | Select id of Output audio devices: 1: 扬声器 (Realtek(R) Audio), Channels: 8, Sample rate: 44100Hz 3: 扬声器 (Realtek(R) Audio), Channels: 8, Sample rate: 44100Hz 4: 扬声器 (Realtek(R) Audio), Channels: 2, Sample rate: 48000Hz 4 Select id of save selected values to config file:
@SakiBiAnNya The issue is that the client cannot find the server's IP address (the OSError: [WinError 10049] indicates this). I tried specifying a non-existent IP in my subnet when connecting with the client and received the same error. This means that either additional port forwarding through the VPN might be needed, or the VPN itself is not allowing connections on these ports, or a different IP address needs to be specified. In any case, this is definitely a network problem. Try using ping, telnet, or another method to establish a connection to the host with this IP. I will make some changes to the utility in the coming days, which might address some issues (specifically, the server will log the IP addresses of all its network interfaces and the DNS name, a single TCP and UDP port will now be used for everything, and there will be minor text/documentation/log adjustments).
@SakiBiAnNya I've added some fixes in release 0.3.3, annotations for server sockets and README.md. Maybe it will fix your problem. Now, you need to open only one port in your firewall for UDP and TCP.
@lHumaNl Thank you for your work. I can see on the server side that the client has attempted to connect, but why do I see 'The requested address is invalid in its context' on the client side? Could it be because I am using a USB sound card (an adapter cable with a DAC chip)?
10.6.22.1 [2024-06-10 19:42:49] INFO | module: main | funcName: run_app | Starting EchoWarp in client mode [2024-06-10 19:42:49] INFO | module: transport_client | funcName: _established_connection | TCP connection to 10.6.22.3 established. [2024-06-10 19:42:49] INFO | module: transport_client | funcName: __authenticate_on_server | Authentication on server completed. [2024-06-10 19:42:49] ERROR | module: main | funcName: main | [WinError 10049] 在其上下文中,该请求的地址无效。 Press Enter to exit...
10.6.22.3 [2024-06-10 19:31:42] INFO | module: transport_server | funcName: _print_udp_listener_and_start_stream | Start UDP audio streaming to client 10.6.22.1:49000 [2024-06-10 19:42:50] INFO | module: transport_server | funcName: _established_connection | Client connected from 10.6.22.1 [2024-06-10 19:42:50] INFO | module: transport_server | funcName: authenticate_client | Client 10.6.22.1 authenticated. [2024-06-10 19:42:50] INFO | module: transport_server | funcName: print_client_info | Client 10.6.22.1 info: Success client connections: 2 Failed client connection attempts after last success: 0/5 Count of failed client connections: 0 [2024-06-10 19:42:50] INFO | module: transport_server | funcName: send_configuration | Configuration sent to client. [2024-06-10 19:42:50] INFO | module: transport_server | funcName: _print_udp_listener_and_start_stream | Start UDP audio streaming to client 10.6.22.1:49000 [2024-06-10 19:42:50] ERROR | module: transport_base | funcName: start_streaming | Heartbeat message from client is NULL [2024-06-10 19:42:50] WARNING | module: transport_server | funcName: _print_pause_udp_listener_and_pause_stream | Audio streaming paused! [2024-06-10 19:42:50] INFO | module: transport_base | funcName: __reconnect | Attempting to stabilize the connection... [2024-06-10 19:42:50] ERROR | module: transport_base | funcName: retry_send_heartbeat | Heartbeat message from client is NULL [2024-06-10 19:42:50] INFO | module: transport_server | funcName: _established_connection | Authenticate server started and awaiting client connection on next INET interfaces: Interface name: 以太网, IP address: 192.168.6.131:49000, DNS: DESKTOP-QG66797.lan:49000 Interface name: natpierce, IP address: 10.6.22.3:49000, DNS: DESKTOP-QG66797.natpierce:49000
@lHumaNl I am using another software called 'Wo Mic' to use my phone as a microphone. It can connect to my phone using port 4415 (my phone is also connected to the virtual LAN) and successfully capture the sound from my phone's microphone.
@SakiBiAnNya Okay, I changed the logic of the client's connection to the server. Now it first establishes a TCP connection, and then creates a UDP socket. Previously, it was the other way around, and that’s why it immediately threw the [WinError 10049] error. Now it correctly establishes the TCP connection, but it still cannot create a UDP socket at this address. I suspect that your VPN cannot forward UDP (or additional settings are needed for that).
You can use PsPing https://learn.microsoft.com/en-us/sysinternals/downloads/psping for checking UDP connection.
You need to forward 2 ports in the VPN: 49000 for TCP and 49000 for UDP.
@SakiBiAnNya Oh... I found a bug. I'll fix it soon.
@lHumaNl I can pass the test on port 10.6.22.3:4415 on a remote host
D:\EchoWarp\PSTools>psping -u -i 1 -n 10 -l 1k -h 10.6.22.3:4415
PsPing v2.12 - PsPing - ping, latency, bandwidth measurement utility Copyright (C) 2012-2023 Mark Russinovich Sysinternals - www.sysinternals.com
UDP bandwidth test connecting to 10.6.22.3:4415: Connected 15 iterations (5 warmup) sending 1024 bytes UDP bandwidth te100%
UDP sender bandwidth statistics: Sent = 10, Size = 1024, Total Bytes: 10240, Minimum = 141.53 MB/s, Maximum = 141.53 MB/s, Average = 141.53 MB/s UDP receiver bandwidth statistics: Received = 6, Size = 1024, Total Bytes: 6144, Minimum = 90.73 KB/s, Maximum = 90.73 KB/s, Average = 90.73 KB/s UDP packet rate: 60.00% Not enough data for histogram. Trying increasing the request size or iteration count.
@SakiBiAnNya Try, plz 0.4.0. I'll fix 2 critical bugs and one of them is your problem.
@lHumaNl Successfully connected, but received a strange sound
@SakiBiAnNya I'll tested on this config (SSL\Integrity control Enabled): 1) Client - Output audio (speaker) 2) Server - Input audio (microphone) And sound was normal.
Later will try with all inputs.
@lHumaNl Oh no, there is a bug. After closing the window and reopening the connection, I will upload abnormally (upload 100m/s with large traffic), and it will also cause abnormal memory usage. The program uses a large amount of memory (12GB), causing my computer to freeze.
@lHumaNl
It says "The process was terminated because it could not allocate more memory"
Wow... Mem leak...
Hello, I am using the program you developed, but I don’t know why it crashes after the step "Select thread workers count (default=1)". Can you help me?![屏幕截图 2024-05-18 163105](https://github.com/lHumaNl/EchoWarp/assets/40420771/0de6095d-facc-4f79-a5a1-634638703252)