Skip to content

ReferenceType/P2PVideocall

Repository files navigation

P2PVideocall

Voice-Video Call Wpf Application based on P2PNetwork. Allows users to have Videocall, Chat and Filetransfer securely over local network or Internet.
Tested and established stable calls between 1.204,5 km distance clients

Release available https://github.com/ReferenceType/P2PVideocall/releases/

Features

  • Secure Videocall among connected peers
  • H264 Encoding
  • Secure Persisitent Chat
  • Secure File-Directory Transfer with hash file integrity verification(TCP and UDP)
  • High Performance Secure Screen Share based on DirectX 11 API (up to 60 fps @1080p single core).

Technical features

  • Secure Tcp & Udp Hole punching
  • Reliable Udp channels and Jumbo Udp Message support
  • Congestion Avoidance and Control
  • Dynamic Jitter Buffer for Audio and Video
  • Toast notifications
  • Statistics data and cool settings for nerds

Application has powerfull and optimised backend which is a hobby for me. However, Front end is incomplete,and its quite boring to develop. Slowly, i intend to complete it.

Note:

Application runs on background when closed with X button, to shut it down fully you have to shutdown from hidden icons on your taskbar (like skype)

How It works

Each application is a Peer client to a Relay Server. This server is used as a randezvous point for Udp Holepunching. If holepunch is sucessfull, all Tcp & Udp traffic is send directly among peers.Otherwise it will be relayed over the server. Tcp holepunch succes rate is lower than udp. All reliable communication is through Reliable Udp channel by default. Relay server is included on releases and can be found on repository: https://github.com/ReferenceType/RelayServer

The back-end network core libraries are located on : https://github.com/ReferenceType/StandardNetworkLibrary

How to setup

Launch the Relay Server console application. Launch the Videocall Application and write your Relay Servers Ip and Port and hit comnnect. If any other application connects to same relay server it will apper on your list on main window. You can select and call that peer or transfer files or chat.

If you intend to use this application over Internet, You need to enable port forwarding on your router for your relay server. If you dont wanna bother with your ISPs dynamic IPs, you can use a DDNS service like NoIP. or you can deploy relay server on a cloud etc.

Images

Call interface

  • Call can be initiated by selecting a peer from left menu anc clicking call button. Other end will receive notification for confirmation.

Share Screen

  • You can share a screen during a call.

Settings

  • Provided varoious settings and displays for visualising.

Background mode mini-window

  • When application is on background, a mini camera window will appear. It is resizeable and it automaticaally disappears when main app is active.

File transfer

  • You can Drag and drop a single file or full directory tree of folders, and application will send them through secure channel.
  • xxHash hashing is also applied here where receiver verifies the file integrity.
  • Both TCP and UDP is supported for transport.

Toast Notification

  • Various windows toast notifications are implemented to notify user. They are similar to skype