VoIP

From Things and Stuff Wiki
Revision as of 01:33, 12 March 2018 by Milk (talk | contribs) (→‎p2pvc)
Jump to navigation Jump to search


General

See also Media#Telephone, Chat

  • https://en.wikipedia.org/wiki/Telepresence - refers to a set of technologies which allow a person to feel as if they were present, to give the appearance of being present, or to have an effect, via telerobotics, at a place other than their true location. Telepresence requires that the users' senses be provided with such stimuli as to give the feeling of being in that other location. Additionally, users may be given the ability to affect the remote location. In this case, the user's position, movements, actions, voice, etc. may be sensed, transmitted and duplicated in the remote location to bring about this effect. Therefore information may be traveling in both directions between the user and the remote location.

A popular application is found in telepresence videoconferencing, the highest possible level of videotelephony. Telepresence via video deploys greater technical sophistication and improved fidelity of both sight and sound than in traditional videoconferencing. Technical advancements in mobile collaboration have also extended the capabilities of videoconferencing beyond the boardroom for use with hand-held mobile devices, enabling collaboration independent of location.


  • https://en.wikipedia.org/wiki/Teleconference - or teleseminar is the live exchange and mass articulation of information among several persons and machines remote from one another but linked by a telecommunications system. Terms such as audio conferencing, telephone conferencing and phone conferencing are also sometimes used to refer to teleconferencing.The telecommunications system may support the teleconference by providing one or more of the following: audio, video, and/or data services by one or more means, such as telephone, computer, telegraph, teletypewriter, radio, and television.





  • https://en.wikipedia.org/wiki/Telecollaboration - a form of network-based language teaching which emerged in language teaching in the 1990s. It refers to the pedagogic practice of bringing together classes of foreign language learners through computer-mediated communication for the purpose of improving their language skills, intercultural communicative competence and digital literacies. Telecollaboration, also increasingly referred to as online intercultural exchange (OIE), is recognized as a field of computer-assisted language learning as it relates to the use of technology in language learning. Outside the field of language education this type of pedagogic practice is increasingly being used to internationalize the curriculum and offer students the possibility to engage with peers in other parts of the world in collaborative online projects. Different terms are used to refer to this practice, for example virtual exchange, collaborative online international learning (COIL), and globally networked learning. Telecollaboration is based on sociocultural views of learning inspired by Vygotskian theories of learning as a social activity.

VoIP

  • http://en.wikipedia.org/wiki/Voice_over_Internet_Protocol - a methodology and group of technologies for the delivery of voice communications and multimedia sessions over Internet Protocol (IP) networks, such as the Internet. The terms Internet telephony, broadband telephony, and broadband phone service specifically refer to the provisioning of communications services (voice, fax, SMS, voice-messaging) over the public Internet, rather than via the public switched telephone network (PSTN).

The steps and principles involved in originating VoIP telephone calls are similar to traditional digital telephony and involve signaling, channel setup, digitization of the analog voice signals, and encoding. Instead of being transmitted over a circuit-switched network, the digital information is packetized, and transmission occurs as IP packets over a packet-switched network.


  • VOIP Wiki - a reference guide to all things VOIP, covers everything related to VOIP, software, hardware, VoIP service providers, reviews, configurations, standards, tips and tricks and everything else related to voice over IP networks, IP telephony and Internet Telephony.




  • RichardNeill.org: A quick, personal guide to VOIP under Linux - this guide was written in 2007. It's mostly still correct, but many of the applications have substantially improved. Also, FreeWorldDialup is no more; try iptel.org instead. The best approach is now Jitsi, notably Video Bridge and meet.jit.si.


  • Free Telco Dictionary – This dictionary should be helpful for employees in telecommunications and also for independent hackers interested in this industry


  • https://en.wikipedia.org/wiki/Federated_VoIP - a form of packetized voice telephony that uses voice over IP between autonomous domains in the public Internet without the deployment of central virtual exchange points or switching centers for traffic routing. Federated VoIP uses decentralized addressing systems, such as ENUM, for location and identity information of participants and implements secure, trusted communications (TLS) for identify verification.
  • https://en.wikipedia.org/wiki/Internet_telephony_service_provider - offers digital telecommunications services based on Voice over Internet Protocol (VoIP) that are provisioned via the Internet. ITSPs provide services to end-users directly or as whole-sale suppliers to other ITSPs. ITSPs use a variety of signaling and multimedia protocols, including the Session Initiation Protocol (SIP), the Media Gateway Control Protocol (MGCP), Megaco, and the H.323 protocol. H.323 is one of the earliest VoIP protocols, but its use is declining and it is rarely used for consumer products. Retail customers of an ITSP may use traditional analog telephone sets attached to an analog telephony adapter (ATA) to connect to the service provider's network via a local area network, they may use an IP phone, or they may connect a private branch exchange (PBX) system to the service via media gateways. ITSPs are also known as voice service providers (VSP).
  • https://en.wikipedia.org/wiki/Telephone_number_mapping - a system of unifying the international telephone number system of the public switched telephone network with the Internet addressing and identification name spaces. Internationally, telephone numbers are systematically organized by the E.164 standard, while the Internet uses the Domain Name System (DNS) for linking domain names to IP addresses and other resource information. Telephone number mapping systems provide facilities to determine applicable Internet communications servers responsible for servicing a given telephone number using DNS queries. The most prominent facility for telephone number mapping is the E.164 Number to URI Mapping (ENUM) standard. It uses special DNS record types to translate a telephone number into a Uniform Resource Identifier (URI) or IP address that can be used in Internet communications.


  • https://en.wikipedia.org/wiki/VoIP_phone - or IP phone uses voice over IP technologies for placing and transmitting telephone calls over an IP network, such as the Internet, instead of the traditional public switched telephone network (PSTN). Digital IP-based telephone service uses control protocols such as the Session Initiation Protocol (SIP), Skinny Client Control Protocol (SCCP) or various other proprietary protocols.
  • https://en.wikipedia.org/wiki/Softphone - a software program for making telephone calls over the Internet using a general purpose computer, rather than using dedicated hardware. The softphone can be installed on a piece of equipment such as a desktop, mobile device, or other computer and allows the user to place and receive calls without requiring an actual telephone set. Often a softphone is designed to behave like a traditional telephone, sometimes appearing as an image of a handset, with a display panel and buttons with which the user can interact. A softphone is usually used with a headset connected to the sound card of the PC, or with a USB phone.




RTP

ZRTP

SRTP

WebRTC

  • WebRTC - a free, open project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose. Mission: To enable rich, high-quality RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols. The WebRTC initiative is a project supported by Google, Mozilla and Opera, amongst others. This page is maintained by the Google Chrome team.


  • https://en.wikipedia.org/wiki/WebRTC - an API definition drafted by the World Wide Web Consortium (W3C) that supports browser-to-browser applications for voice calling, video chat, and P2P file sharing without the need of either internal or external plugins.

Two peers first need to find one another. This signalling step is purposefully omitted from the WebRTC specification, since the WebRTC protocol is not specific to browsers and can be used by any number of different devices in different circumstances. Sometimes this is hindered by network topology realities, e.g. non-permissive firewalls or NAT routers. In this case it is physically impossible for the two peers to communicate in a P2P manner and a third party relay is required; this is included in the WebRTC specification in the form of a TURN server. [1]



  • Wiki of the W3C Real-Time Communications Working Group - the main point of entry for participants of the group as well as for people interesting in the day-to-day life of the group. It is used to collect drafts, ideas and logistics information. Higher-level information about the Web Real-Time Communications Workin Group is available on the main home page of the group.


  • Google Codelabs: Real time communication with WebRTC - WebRTC is an open source project to enable realtime communication of audio, video and data in Web and native apps. WebRTC has several JavaScript APIs.
getUserMedia(): capture audio and video.
MediaRecorder: record audio and video.
RTCPeerConnection: stream audio and video between users.
RTCDataChannel: stream data between users.


  • https://github.com/cjb/serverless-webrtc - a tech demo of using WebRTC without a signaling server -- the WebRTC offer/answer exchange is performed manually by the users, for example via IM. This means that the app can run out of file:/// directly, without involving a web server. You can send text messages and files between peers.




File transfer



  • file.io - Ephemeral file sharing. Convenient, anonymous and secure [2]



  • reep.io - transfer files directly to another browser. Just point to a file you want to share. Your peer will then be able to download this file directly from you. No data is stored on a server in-between.



Video chat


  • YouTube: [httpd://www.youtube.com/watch?v=p2HzZkd2A40 Real-time communication with WebRTC: Google I/O 2013]


  • palava.tv - simplistic video communication with your friends and colleagues from within your web browser. It is build on top of the WebRTC technology. No registration or browser plugin required.
  • faces.io - dead simple video chat. "This is the hackiest code I've ever written. Most of it is copy pasted from elsewhere" [6]


  • https://github.com/Gargron/baron - a WebRTC-based web application that allows people to have peer-to-peer text, audio and video conversations with permanent accounts and contact lists. The back-end is written in JavaScript (Node.js), the signaling channel uses Socket.io. The front-end is written in Ember.js. Authentication is done using Mozilla Persona. 2014.


  • Talky - truly simple video chat and screen sharing for groups
  • appear.in - a video collaboration tool that lets you have video conversations effortlessly with up to 8 people simultaneously. The premium version supports up to 12. You can create a room with no registration required, and even register to own and customize your own video room-links. appear.in works on almost any device and even lets you share your screen to show presentations, photos or spreadsheets.


  • Real-Time Communications Quick Start Guide - This quick start guide walks through the essential steps to build a working real-time communications platform with full support for federation with other autonomous domains over the public Internet. We show the essential steps first: setting up a TURN server, SIP proxy and an XMPP server. Setting up an Asterisk or FreeSWITCH PBX is not essential, these are supplementary services that should be added in a later stage of the project.




  • https://github.com/so010/knockplop - Basic multipart p2p meeting webservice (client + server) based on WebRTC technology. For now it is only audio and video but desktop sharing, file sharing and whitheboard will follow.

Multiparty video

There are in general 3 main models of deploying a multiparty video conference:

  • Mesh – where each participant sends his media to all other participants
  • MCU – where a participant is “speaking” to a central entity who mixes all inputs and sends out a single stream towards each participant
  • SFU – where a participant sends his media to a central entity, who routes all incoming media as he sees fit to participants – each one of them receiving usually more than a single stream.

I’ve taken the time to use testRTC to show the differences on the network between the 3 multiparty video alternatives on the network. To sum things up:

  • Mesh fails miserably relatively fast. Anything beyond 3 isn’t usable anywhre in a commercial product if you ask me
  • MCU seems the a good approach when it comes to load on the network
  • SFU is asymmetric in nature – similar to how ADSL is (though this can be reduced, just not in Jitsi in the specific scenario I tried)
  • big video
  • screen sharing through Jitst Meetings extension
  • integrated Etherpad
  • integrated raise hand
  • quality control
  • basic text chat
  • live streaming to YouTube


Mixed media

  • PeerJS - wraps the browser's WebRTC implementation to provide a complete, configurable, and easy-to-use peer-to-peer connection API. Equipped with nothing but an ID, a peer can create a P2P data or media stream connection to a remote peer.



  • Matrix - an open standard for decentralised communication, providing simple HTTP APIs and open source reference implementations for securely distributing and persisting JSON over an open federation of servers. Fully distributed persistent chatrooms with no single points of control or failure. WebRTC signalling transport for interoperable VoIP and video calling. Exchanging and persisting data between devices and services.


  • Hubl.in - a free and open source video conference solution built with love and designed with ethics in mind. It's the best way to initiate a communication anywhere with anybody and brings real time conversation to the next level. Hubl.in allows free communication without additional plugins. If you can read this page, you probably can use Hubl.in right now. [8]



Gateways

Jitsi Videobridge

Janus

  • Janus - a WebRTC Gateway developed by Meetecho conceived to be a general purpose one. As such, it doesn't provide any functionality per se other than implementing the means to set up a WebRTC media communication with a browser, exchanging JSON messages with it, and relaying RTP/RTCP and messages between browsers and the server-side application logic they're attached to. Any specific feature/application is provided by server side plugins, that browsers can then contact via the gateway to take advantage of the functionality they provide. Example of such plugins can be implementations of applications like echo tests, conference bridges, media recorders, SIP gateways and the like.

Kurento

  • Kurento - a WebRTC media server and a set of client APIs making simple the development of advanced video applications for WWW and smartphone platforms. Kurento Media Server features include group communications, transcoding, recording, mixing, broadcasting and routing of audiovisual flows. As a differential feature, Kurento Media Server also provides advanced media processing capabilities involving computer vision, video indexing, augmented reality and speech analysis. Kurento modular architecture makes simple the integration of third party media processing algorithms (i.e. speech recognition, sentiment analysis, face recognition, etc.), which can be transparently used by application developers as the rest of Kurento built-in features.


mediasoup

  • mediasoup - Cutting Edge WebRTC Video Conferencing


  • SylkServer - allows creation and delivery of rich multimedia applications accessed by SIP Clients, XMPP endpoints and WebRTC applications. NEW Sylk is a WebRTC client focused on multiparty video conferencing. Sylk is the companion client for SylkServer.

FreeSWITCH


SIP

  • webrtc2sip is a smart and powerful gateway using RTCWeb and SIP to turn your browser into a phone with audio, video and SMS capabilities. The gateway allows your web browser to make and receive calls from/to any SIP-legacy network or PSTN. As an example, you will be able to make a call from your preferred web browser to a SIP-legacy softphone (e.g. xlite) or mobile/fixed phone. The gateway contains four modules: SIP Proxy | RTCWeb Breaker | Media Coder | Click-to-Call.
  • sipml5 - The world's first HTML5 SIP client (WebRTC). Source code freely provided to you by Doubango Telecom ® under BSD terms. This is the world's first open source HTML5 SIP client (May 12, 2012) entirely written in javascript for integration in social networks (FaceBook, Twitter, Google+), online games, e-commerce sites... No extension, plugin or gateway is needed. The media stack rely on WebRTC. The client can be used to connect to any SIP or IMS network from your preferred browser to make and receive audio/video calls and instant messages. It's also possible to make calls to PSTN or any SIP-legacy network using webrtc2sip.org. The protocol parsers (SIP, SDP...) are highly optimized using http://www.complang.org/ragel/ Ragel lookup tables and is suitable for embedded systems with limited memory and low computing power.


Overlay

  • https://github.com/diasdavid/webrtc-explorer - a Chord inspired, P2P Network Routing Overlay designed for the Web platform (browsers), using WebRTC as its layer of transport between peers and WebSockets for the exchange of signalling data (setting up a connection and NAT traversal). Essentially, webrtc-explorer enables your peers (browsers) to communicate between each other without the need to have a server to be the mediator.

Services



  • OpenCNAM provides a simple, elegant, and RESTful API to get Caller ID data. Our service is built for programmers like you, who want simple access to Caller ID information.
  • slydial is a free voice messaging service that connects you directly to someone's mobile voicemail. slydial is a service of MobileSphere.


SIP

See also Sharing#SIP

Ring


PJSIP

  • PJSIP - a free and open source multimedia communication library written in C language implementing standard based protocols such as SIP, SDP, RTP, STUN, TURN, and ICE. It combines signaling protocol (SIP) with rich multimedia framework and NAT traversal functionality into high level API that is portable and suitable for almost any type of systems ranging from desktops, embedded systems, to mobile handsets. PJSIP is both compact and feature rich. It supports audio, video, presence, and instant messaging, and has extensive documentation. PJSIP is very portable. On mobile devices, it abstracts system dependent features and in many cases is able to utilize the native multimedia capabilities of the device. PJSIP has been developed by a small team working exclusively for the project since 2005, with participation of hundreds of developers from around the world, and is routinely tested at SIP Interoperability Event (SIPit ) since 2007.

XMPP Jingle

See also Chat#Jingle

Systems

Asterisk

  • Asterisk is an open source framework for building communications applications. Asterisk turns an ordinary computer into a communications server. Asterisk powers IP PBX systems, VoIP gateways, conference servers and other custom solutions. It is used by small businesses, large businesses, call centers, carriers and government agencies, worldwide. Asterisk is free and open source. Asterisk is sponsored by Digium.

Today, there are more than one million Asterisk-based communications systems in use, in more than 170 countries. Asterisk is used by almost the entire Fortune 1000 list of customers. Most often deployed by system integrators and developers, Asterisk can become the basis for a complete business phone system, or used to enhance or extend an existing system, or to bridge a gap between systems.

FreeSWITCH

GNU SIP Witch

  • GNU SIP Witch is a secure peer-to-peer VoIP server that uses the SIP protocol. Calls can be made peer-to-peer behind NAT firewalls, and without needing a service provider. GNU SIP Witch does not perform codec operations and thereby enables SIP endpoints to directly peer negotiate call setting and process peer to peer media streaming even when when multiple SIP Witch call nodes at multiple locations are involved. This means GNU SIP Witch operates without introducing additional media latency or offering a central point for media intercept or capture. GNU SIP Witch can be used to build secure and intercept-free telephone systems that can operate over the public Internet.

OpenVBX

TropoVBX

GNU Bayonne

  • GNU Bayonne traditionally operates as a generic script driven telephony server that can operate with existing third party telephony api kits, such as those produced by Intel-Dialogic, Aculab, Pika (montecarlo), or Voicetronix. GNU Bayonne also includes pure network drivers for SIP and H323. Specific drivers and api adaptions offer features unique and targetted to those environments. For example, some telephony api's support various forms of conferencing, and these features are available in Bayonne adaptions for those api's.

Common uses include voice messaging, voice broadcast, and prepaid calling in conjunction with a SIP server or H323 gatekeeper such as Ser, SipX, GNU SIP Witch or GNU Gate Keeper; for offering IMS services and for carrier hosted applications; and for integration with legacy digital and analog key telephone systems. These use cases imply that Bayonne will also assume the goals and functionality of the original Babylon PBX integration server as well.

Doubango

  • Doubango Telecom is a young Telco company focused on open source projects. We are specialized in NGN technologies (3GPP, TISPAN, Packet Cabel, WiMax, GSMA, RCS-e, IETF...standards), audio/video coding, cloud computing and WebRTC. Our products include SIP/IMS (VoIP) clients/servers/gateways, TelePresence and Telemedicine systems, VNC stacks and audio/video codecs. Most of our products are already open sourced.
    • https://github.com/DoubangoTelecom/doubango - a mature, open source, 3GPP IMS/LTE framework for both embedded and desktop systems. The framework is written in ANSI-C to ease portability and has been carefully designed to efficiently work on embedded systems with limited memory and low computing power and to be extremely portable.


  • https://github.com/2600hz/kazoo Kazoo, an ambitious project to bring cloud-based VoIP and telecommunications to everyone. Our goal is to provide the world with a free, open telecommunications software platform. Released under the OSI-approved MPL 1.1 open source software license, we're building upon strong FOSS components like GNU/Linux, Erlang, FreeSWITCH, Apache CouchDB, and RabbitMQ. Our project is a great example of the wonderful things that can happen when software is open. Kazoo is an API-based platform that lets you use your existing phones, programming languages and IT skills to build voice, video and SMS services. We focus on building a simple, powerful communications platform and let you focus on marketing, servicing and integrating communications with your clients systems.


  • http://www.pjsip.org/ - PJSIP is a free and open source multimedia communication library written in C language implementing standard based protocols such as SIP, SDP, RTP, STUN, TURN, and ICE. It combines signaling protocol (SIP) with rich multimedia framework and NAT traversal functionality into high level API that is portable and suitable for almost any type of systems ranging from desktops, embedded systems, to mobile handsets.



Linux clients

Ekiga

Jitsi

SLPhone

Linphone

Twinkle

I Hear U

  • IHU is a Voice over IP (VoIP) application for Linux (using Qt), that creates an audio stream between two computers easily and with the minimal traffic on the network.


Android clients

Skype

Run multiple Skype sessions [10];

skype --dbpath=~/.Skype2 &
  • Karaka is a Skype/XMPP gateway that connects the Skype and XMPP clouds.

Other

Mumble

sscall

  • sscall - A simple UDP based voice chat program. Currently we use libspeexdsp for its resampling capabilities and opus as the audio codec. There will also be ssl support in future versions. We basically need something that works well on many UNIX flavours. Skype is not really the answer to that. We also want something simple so that we can build on top of it. The plan is to create another program called ssvideo for video streaming.

p2pvc

Seren

  • Seren - Seren is a simple VoIP program based on the Opus codec that allows you to create a voice conference from the terminal, with up to 10 participants, without having to register accounts, exchange emails, or add people to contact lists. All you need to join an existing conference is the host name or IP address of one of the participants.

Seren creates a dynamic peer-to-peer network of equivalent nodes which exchange text and audio data using a udp connection, and offers the user the ability to change the quality/bitrate on the fly, encrypt the traffic and record the calls.