Bevor ein Telefongespräch auf Basis von VoIP geführt werden kann, muss das analoge Audiosignal in ein digitales Signal umgewandelt werden. Da oft nur eine geringe Bandbreite zur Verfügung steht, ist auch eine entsprechende Komprimierung des Signals notwendig. Dabei wird eine möglichst hohe Sprachqualität bei einer möglichst niedrigen Datenrate angestrebt. Wählt man dabei ein Kodierverfahren mit niedriger Bitrate und hoher Kompression, so ist beim Kodieren und Dekodieren viel Rechenleistung notwendig. Steht diese nicht zur Verfügung, so muss zwangsläufig ein Verfahren verwendet werden, bei dem die Bitrate höher ist.
Das Sprachsignal wird beim Sender gemäß seiner Menge erfasst (quantisiert) und kodiert. Danach wird es über das Internet übertragen und beim Empfänger dekodiert, also für die Wiedergabe in ein analoges Signal umgewandelt. Die wichtigste Forderung an das verwendete Kodierverfahren ist: das Signal muss in Echtzeit, das heißt mit minimaler Verzögerung, kodierbar und dekodierbar sein.
Das Wort Codec ist ein englisches Akronym der Begriffe Coder und Decoder. Spricht man von einem Codec, so meint man meistens ein Verfahren zum Umwandeln von analogen Sprach- oder Videoinformationen in ein digitales, oft komprimiertes Format. Die Verfahren zur Kodierung eines analogen Signals sind vielfältig und haben sich in den letzten Jahren stark entwickelt. Besonders durch höhere Rechenkapazitäten und höhere Bandbreiten haben sich die Möglichkeiten der Codec-Entwickler verbessert. Weiterhin haben die Entwickler mit vielen Problemen zu kämpfen. So müssen Codecs zum einen ressourcenschonend sein, zum anderen das Originalsignal möglichst originalgetreu wiedergeben. Fehlerhaft übertragene oder ganz fehlende Pakete müssen ersetzt werden, ohne dass sich dies negativ auf die Signalqualität auswirkt. Die Methoden hierfür sind vielfältig. Einige Codecs setzten auf das Auffüllen dieser Lücken mit einfachem Rauschen, andere, aufwendigere, setzen auf Schachtelung der Sprachinformationen in viele Pakete. Geht hier ein Paket verloren, kann der verlorengegangene Inhalt aus den korrekt empfangenen Paketen errechnet werden. Man erkauft sich bei erstgenanntem Verfahren die hohe Performance mit gelegentlich hörbaren Knacksen bei Verlust von Paketen, während man bei dem zuletzt genannten Verfahren bei einem Paketverlust oft eine höhere Verzögerung und eine durch nicht ganz perfekte Auffüllalgorithmen künstlich klingende Stimme hat.
Daher müssen bei der Wahl der Codecs in den Endgeräten immer die aktuellen Netzwerkbedingungen beachtet werden. Beispielsweise führt der Einsatz eines G.711 (PCM) Codecs auf einer schmalbandigen Verbindung zu erheblichen Verzögerungen. Dies resultiert, durch das Verwerfen der zu spät empfangenen Pakete (welche als Jitter klassifiziert werden), in einer Minderung der Sprachqualität. Steht in einem Übertragungskanal nur eine geringe Bandbreite (Netto: <64 KBit/s, Brutto: < 85 KBit/s) zur Verfügung, muss ein anderer Codec (mit einer höheren Kompression und somit mit einer geringeren Bandbreitenanforderung) genutzt werden. Hierfür eignen sich beispielsweise die G.729 oder G.723 Codecs.
In der Praxis bieten die heutigen LANs und IP-Netze im Unternehmensumfeld genügend Bandbreite und es werden daher immer die „optimalen“ Codecs genutzt. Werden jedoch externe Gespräche geführt, kann es beim Übergang in das öffentliche Netz schnell zu Bandbreitenengpässen führen. In der Regel entspricht die Bandbreite des DSL-Upstreams nicht der Downstream-Bandbreite. Tritt ein Bandbreitenengpass durch zu viele parallele VoIP/IP-Verbindungen in der Upstream-Richtung auf, muss der Default-Codec G.711 gegen einen schmalbandigeren Codec ausgetauscht werden. Hierfür lassen sich beispielsweise die Codecs G.729a (CS?ACELP), G.723.1 (MP?MLQ) und G.726 (ADPCM) nutzen. Diese Codecs reduzieren zwar die Sprachqualität, erfordern jedoch für den Transport eine geringere Bandbreite.
Die Codecs werden beim Aufbau einer VoIP-Verbindung zwischen den Endgeräten ausgehandelt. Der Systemadministrator kann in den Endgeräten vorkonfigurieren, welche Codecs vom Gerät genutzt werden sollen. Bei einem Aufbau eines Gesprächs verschicken die beteiligten Endgeräte ihre unterstützen Codecs in Form von einer Codec-Liste zu den anderen Teilnehmern. Werden mehrere Codecs unterstützt, sollte der bevorzugte Codec immer an erster Stelle der Liste stehen. Die Endgeräte überprüfen die Liste auf die jeweilig beste Übereinstimmung und nutzen anschließend einen Codec-Standard für die Verbindung. Kann keine Übereinstimmung bei dem Codec zwischen den Endgeräten erzielt werden, kommt das Telefongespräch nicht zur Stande.
Die jeweiligen Codecs werden anhand von Identifikatoren unterschieden. Diese Informationen werden in den RTP-Paketen mitgeführt und die Empfangsstation des RTP-Streams weiß, welcher Decoder zur Entschlüsselung des Empfangssignals zu nutzen ist. Die Identifikatoren auch RTP-IDs genannt, werden während der Signalisierung ausgetauscht, so dass die Empfänger der Daten auch den entsprechenden Decoder verwenden.
Bei Verwendung eines falschen Codecs, kann das Gespräch nicht korrekt wiedergegeben werden und sämtliche Sprachinformationen gehen verloren.
Nutzen zwei miteinander kommunizierende Endgeräte nicht die gleichen Codecs und werden die Sprachinformationen trotzdem richtig wiedergegeben, dann befindet sich mindestens ein Media Gateway zwischen den beiden Endgeräten. Dieser Gateway sorgt für die korrekte Übersetzung der unterschiedlich codierten Signale. Eine solche Codec-Umsetzung reduziert in der Regel die Signalqualität. Aus diesem Grund sollten in einem VoIP-Netz möglichst wenige Codec-Umsetzungen erfolgen.
Die Nutzung des richtigen Codecs verbessert die Sprachqualität. Durch die Analyse der Verbindungsinformationen mit Hilfe eines VoIP-Analysators werden Probleme bei der Aushandlung der Codec sichtbar gemacht und durch eine Umkonfiguration der aktiven Codecs in den Endpunkten/Gateways die Sprachqualität erheblich verbessert.