Git Product home page Git Product logo

p2pvideocall's Introduction

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

p2pvideocall's People

Contributors

referencetype avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

p2pvideocall's Issues

Video Viewed from only the Device on which Relay Server Runs.

Hi,

It is very good application for peer to peer video call. I am facing some issues as explained below.

I am running Relay Server on 192.168.1.35, Also running one client application on the same device with username Test1.
I am running client application on 2 more devices with usernames Test2 and Test3. In these devices application setting host IP is provided as 192.168.1.35. So I am able to see Online peers.

Case1: When I call from Test1 to Test2, video is shown on Test2, but there is no video and audio incoming on Test1.
Case2: Call between Test2 and Test3, no video seen on both devices.

So my observation is Video is transferred from only device with username Test1, where the Relay server is running.

Please let me know what is the issue?

Is it possible to have communication between end devices without having Relay server?

Request

Can the next feature be used for group chat?

Maybe it would be more interesting if there was an option to send audio only.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.