Codec
Sprache ist eigentlich ein analoges Signal. Auch Bilder haben eigentlich "unendlich" viele Farben. Aber der Mensch ist zum einen sehr tolerant bzw. "unempfindlich" was Töne und Bilder betrifft und zum anderen denken Computer nun mal binär. Es gibt auch analoge Computer aber das ist ein anderes Thema. Fakt ist aber, dass die meisten Menschen höhere Töne nicht mehr hören, wenn Sie von lauteren und tieferen Tönen überlagert sind. Auch bei Bildern sind durchaus kompromissbereit.
Die Auswirkungen können wir täglich erleben. Das Alpenpanorma ist schon beeindruckender, wenn man auf der Aussichtsplattform steht. Trotzdem werden viele Bilder mit x Megapixel "geschossen" und dann auf dem heimischen Monitor oder "Pictureframe" mit 800x600 Pixel angeschaut. Und bei Musik geben sich die meisten Menschen mit MP3-Dateien und 128kbit Auflösung zufrieden, weil sie mehr doch nicht unterscheiden können. Und beim telefonieren über Mobilfunk (GSM) sind es sogar nur 13,7kbit. Und damit sind wir in der Welt der Codec
Abtastung und Kompression
Ein Codec ist letztlich nichts anderes als eine Beschreibung, wie Informationen zu erfassen und gegebenenfalls zu komprimieren sind und später wieder zurückverwandelt werden können. Diese "Anleitung" wird von Programmierern in entsprechenden Code umgesetzt, der dann aus Signalen entsprechende Bits macht. Im Laufe der Entwicklung wurden verschiedene Codecs entworfen, von denen einige auch durch Patente geschützt sind, andere nicht. Auch die Qualität und die Anforderungen unterscheiden sich erheblich.
- Abtastung
Analoge Signale werden wiederholt digitalisiert und damit in Bits und Bytes umgewandelt. Bekannt ist sicher das ISDN-Format, bei dem das Tonsignal 8000 Mal pro Sekunde mit 8 Bit digitalisiert wird, d.h. aus den analogen Spannungen wird eine Zahl von -128 bis 127. (8 Bit eben). Das Ergebnis ist dann ein kontinuierlicher Datenstrom von 64kBit. Genau die ISDN-Übertragungsrate. Komprimiert wird da nicht. CPU-Leistung war damals noch begrenzt. Wer etwas Nachrichtentechnik kennt, weiß aber nun, dass man mit 8000 Messpunkten nur eine maximale Frequenz von 4kHz ermessen kann. Hohe Töne kommen also nicht durch. Die Stimme ist daher nicht nur unnatürlich "flach", es gibt auch Laute, die sich dann nicht mehr so gut unterscheiden lassen, z.B. "f" und "s". Diese unterscheiden sich fast nur in hohen Tönen. Entsprechende "Wideband"-Codec tasten z.B. 16000/Sek ab. Die zusätzliche Datenrate muss man natürlich wieder durch Kompression einstampfen. Anders als bei einer Datenkompression ist unser Ohr aber noch tolerant, so das sogar "Verluste" in einem bestimmten Rahmen toleriert werden. Ein mit 64kbit digitalisierter MP3-Song hört sich immer noch besser an, als über das Telefon abgespielt.
Bei Bildern ist quasi die "Bildwiederholrate", fps (Frames per Second) ein Faktor, der bestimmt, wie oft ein neues Bild erfasst wird. Damit die Datenmenge nicht immens steigt, kann ein Codec hier aber z.B. nur die Änderungen zum vorherigen Bild übertragen. - Kompression
Sie kennen alle die Kompression durch effektiver Speicherung. Bei Daten gibt es z.B. das ZIP-Format, bei Bildern z.B. PNG oder GIF, die verlustfrei arbeiten. Durch das Einpacken, Übertragen und spätere Entpacken gehen keine Daten verloren. Das ist bei Tönen und erst recht bei Bildern nicht erforderlich. die nagelneue 8 Megapixel-Kamera speichert ihre Bilder per JPG Kompression mit sehr viel weniger Platzbedarf ab. Das kann sie nur, weil Sie Bildinformationen zusammenfasst. Ein Mensch kann geringe Farb- oder Helligkeitsunterschiede nicht erkennen, so dass man keine 100 Nuancen von Blau übertragen muss. Dafür sind die Kanten wichtiger. Trotzdem können beim bewegten Bild viele Informationen weg gerechnet werden. Wenn man dann noch nur "Änderungen" überträgt, dann wir das Volumen weiter reduziert. Auf die einzelnen Details will und kann ich hier nicht eingehen, aber es gibt auch hier für jeden Anwendungsfall den passenden Codec. - Fehlerkorrektur
Nun können bei der Übertragung über das Netzwerk auch mal Pakete verloren gehen. Eine abgesicherte Verbindung mit "erneutem Zusenden" ist bei Computerdaten wichtig. Hier darf kein Bit fehlen. Daher nutzen viele Protokolle (SMTP, HTTP, FTP, SMB, RDP etc.) alle TCP als Unterbau. Wenn aber von einer Audioübertragung mal 20millisekunden fehlen, dann werden Sie das in der Regel gar nicht merken. Ein einzelnes Paket muss man also nicht wieder senden. Fehlen aber zu viele, dann gibt es doch unschöne Aussetzer oder metallisch klingende Seitentöne. Bestimmte Codec können das erkennen und senden dann zusätzliche Pakete, so dass beim Ausfall eines Pakets der Inhalt rekonstruiert werden kann. Stellen Sie sich einfach vor, es gäbe sowas wie ein RAID, nur dass hier nicht die Daten auf N+1 Disks verteilt werden, sondern eben das Startbild auf z.B. in 10 Bilder passt und ein 11tes Prüfsummenpaket mitkommt. Bei Bildern ist dies vor allem für das I-Frame wichtig, welches üblicherweise eine "Group of Pictures" (GOP) einleitet und ohne das die Folgepaket wertlos sind. Das ist der Grund, warum ein Film auch mal einige Sekunden "hängen" kann oder sie nicht sekundengenau vor und zurückspulen können.
Sie sehen also, das schon ohne eine detaillierte Auseinandersetzung mit den mathematischen Besonderheiten die Thematik sehr umfangreich werden kann.
Beispiel G.711
Die Thematik der Abtastung lässt sich an einem nicht komprimierenden Verfahren wie dem G.711-Codec sehr einfach aufzeigen. Bei einer Abtastrate von 8000 Messpunkten pro Sekunde mit einer Auflösung von 8 Bit ( also -127 bis 128) kommen damit 64kbit (8000x8) zusammen.

Damit die Zeitverzögerung der Sprache nicht zu groß wird, werden immer 20 Millisekunden in einem Block versendet. Aus der Sekunde werden als 50 Pakete mit den Daten von 20ms.

Zieht man so einen Abschnitt noch etwas größer, dann erkennt man sogar die einzelnen digitalisierten diskreten Punkte

Bei 8000 Messpunkten /50 Pakete sind dies also 160 einzelne Werte, oder eben 160 Byte, die im Ethernet Paket übertragen werden. Schaut man sich ein solches Paket dann aber mal im Ethernet an (Hier WiFi) dann sieht man den Overhead

Es werden hier 171 Bytes "Nutzlast" übertragen. Darauf kommt aber noch der UDP-Header (+20 Byte), der IP-Anteil (+20 Byte) und dann noch der Ethernet (bzw. hier WiFi), so dass am Ende 275 Byte übertragen werden. Der Overhead würde prozentual weniger, wenn man mehr Daten pro Paket versenden würde. Wer aber z.B. 40ms einpackt verzögert auch die Übertragung noch mehr. Zudem würde dann ein Paketverlust gleich einen deutlicher hörbaren "Aussetzer" verursachen. Einige Codecs sind daher flexibel und messen die Laufzeiten, Verluste etc. und passen dynamisch die Abtastintervalle an.
Audio-Codecs im Detail
In Verbindung mit Lync, OCS, VoIP und Video kommen einige Codecs zum Einsatz. Lync wechselt sogar Codecs im laufenden Gespräch, z.B. wenn die Bandbreite zu knapp wird, die Fehlerrate ansteigt. Auch ist es ein Unterschied, ob ein Lync Client mit einem anderen Lync-Client verbunden ist, oder ob mittels "Media Bypass" der Client direkt mit dem Gateway spricht. Bei Konferenzen hingegen muss man die Arbeit der zentralen Mixerstelle (MCU) optimieren und verzichtet vielleicht auf den "besten" Codec zugunsten eines Codecs mit weniger Rechenbedarf.
Da viele Codes auch "Stille" erkennen können und dann reduziert senden (und der Empfänger ein "Comfort Noise-Signal" wiedergibt, ist die Bandbreite als "Obere Grenze ohne Fehlerkorrektur" angegeben. Zudem habe ich (außer bei GSM) die Bandbreite auf Ethernet umgesetzt. Zu den 64kbit G.711 kommt ja noch der Ethernet Overhead dazu.
| Codec | Bandbreite (Max ohne FEC) | MOS | Einsatzzweck |
|---|---|---|---|
| GSM verschiedene | 6,5-13kbps | Im GSM-Netz werden binäre Daten übertragen und das ist "teuer". abgestimmt auf die Slots (TDM)-Verfahren) und die Leistung der Geräte kommen verschiedene Codecs zum Einsatz, die meist nur 3.1 KHz übertragen können und natürlich stark komprimieren. | |
| G.711a G.711u |
97 kbs | 4,4 4,2 |
Dieser Codec
wird im
ISDN-Netz
eingesetzt und
tastet 64kbit
ab. Er wird auch
als PCMa aLaw
(Europa) und PCM
uLaw (USA)
bezeichnet. Der
Einsatz bei VoIP
ist besonders
einfach, da ein
Gateway die
Daten dann nicht
umkodieren muss.
Die
unterschiedliche
Qualität kommt
daher, dass uLaw
mit 56kbit und
aLaw mit 64kbit
abgetastet wird http://en.wikipedia.org/wiki/G.711 |
| G.722 | 101 kbs | Dieser Codec
ist ein "Wideband"
Codec, d.h.
tastet höher
(16khz) und mit
14 Bit ab und
kommt z.B. in
Konferenzen oft
zum Einsatz.
Auch Lync nutzt
den Codec für
Audio-Konferenzen http://en.wikipedia.org/wiki/G.722 Achtung: G722.1 ist eher mit Siren vergleichbar und nicht mit G.722 |
|
| SIREN | 53 kbs | Ursprünglich
von Picturetel
(Heute Polycom)
entwickelter
Codec, der von
OCS 2007R2 noch
für Konferenzen
genutzt wird http://en.wikipedia.org/wiki/Siren_Codec |
|
| RTAudio8 | 45kbs | Dies ist der
von Microsoft
native genutzte
Codec, um Audio
zwischen PCs zu
übertragen. Dank
Kompression, die
natürlich auch
aufgrund des
Computers
einfacher ist,
kommt der Codec
mit relativ
wenige
Bandbreite aus.
Bedenken Sie,
dass der
Ethernet
overhead für
alle gleich ist. http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=7515 http://en.wikipedia.org/wiki/Rtaudio |
|
| RTAudio16 | 62kbs | Dies ist die "Wideband" Variante, die höher auslöst | |
| T.38 | Dieser Codes
ist für FAX
optimiert. Beim
Übergang aus dem
PSTN-Netz sollte
das Gateway die
"Faxtöne" quasi
schon
digitalisieren,
so dass der
Codec schon das
binäre Fax
überträgt und
keine
digitalisierten
Töne. Damit muss
man zum einen
nicht 64kbit
abtasten, da die
meisten
Faxgeräte gerate
mal 14000 Baud
nutzen und T.38
enthält zudem
die Funktion,
verlorene Pakete
erneut zu
übertragen
(Feherlsicherung).
T.38 ist daher
sehr ratsam für
Fax. Leider
erfordert dies
leistungsfähigere
Gateways und
eine
Unterstützung
bei Endpunkte. http://en.wikipedia.org/wiki/T.38 |
||
| G.723.1 |
Lizenzpflichtiger
Codec mit sehr
hoher
Kompression und
schlechter
Audioqualität.
Kommt aber oft
in VoIP-Umgebungen
vor und wird von
Exchange UM
unterstützt. http://en.wikipedia.org/wiki/G.723.1 |
||
| G.726-40 G.726-32 G.726-24 G.726-16 |
4,2 3,9 3,3 2,5 |
Die Angabe
40,32,24 und 16
steht für die
Absatzrate http://en.wikipedia.org/wiki/G.726 |
Es gibt noch eine ganze Menge weiterer Codecs, aber diese sind üblich im Bereich VoIP.
Bei Audio-Konferenzen ist es üblich, die verschiedenen einkommenden Tonsignale zu "mixen", d.h. hier ist es dann wichtig, dass der Codec die MCU nicht überfordert. Sie muss ja zumindest die wenige Audioströme decodieren und zusammenfügen, die dann wieder an alle Teilnehmer verteilt werden. Hoffen wir mal, dass die meisten Teilnehmer "schweigen und auch keine Hintergrundgeräusch die "Erkennung der Stille" verhindern.
- Understanding Unified
Messaging Audio Codecs
http://technet.microsoft.com/en-us/library/aa998670.aspx - Planning for Call Admission
Control
http://technet.microsoft.com/en-us/library/gg398334.aspx - Audio-Codecs zur
Sprachdigitalisierung
http://www.elektronik-kompendium.de/sites/net/0905121.htm
MOS-Wert (Mean Opinion Score)
MOS ist die Abkürzung für "Mean Opinion Score". Die Qualität einer Sprachverbindung wird in der Telekommunikation anhand des MOS-Werts angegeben. Die Scala von MOS reicht dabei von 1 (schlecht) bis 5 (sehr gut). Der MOS-Wert beruht auf einer Testreihe mit einer Gruppe von Versuchspersonen und stellt daher einen subjektiven Wert zur Beurteilung der Qualität der Sprachübertragung dar. Im ISDN wird ein MOS-Wert von knapp über 4 erreicht. Die Qualität hängt von der Übertragungsleitung aber auch vom verwendeten Codec ab.
- How to interpret OCS 2007 R2 Monitoring reports
http://msunified.net/2009/07/06/how-to-interpret-ocs-2007-r2-monitoring-reports/ - Microsoft Office Communications Server 2007 Mean
Opinion Score and Metrics
http://technet.microsoft.com/en-us/library/bb894481.aspx - Mean Opinion Score
http://de.wikipedia.org/wiki/Mean_Opinion_Score - Arbeitspapier: Bandbreitenmanagement in
Kommunikationsnetzen
http://www.vaf-ev.de/de/contentGroup/1_5_0/content/TECHNIK_INFO/release_date/desc/0/0
http://www.vaf-ev.de/global/dbbin/260510_135925_technik_info_bandbreite_v2010-2.pdf
Video-Codecs
Für Video kommen dann noch ein paar weitere Codec hinzu, da Video ganz andere Anforderungen an die Übertragung stellt. Die meisten Codec übertragen zu bestimmten Zeiten, z.B. alle 10 Sekunden (H.264) oder 3 bzw 4 Sekunden (RTVideo) ein komplettes Bild und füllen die Zwischenräume mit unterschiedlichen "Differenzbildern" auf. Kommen diese "I-Frames" nicht an, dann bemerken Sie dies an einem "Rucken" des Bilds. Auch das Vor-und Zurück-Spulen eines solchen Films (DVDs und HDTV codieren ähnlich) kann dann immer erst wieder an so einem I-Frame aufsetzen.
Diese I-Frames sind natürlich "Groß", so dass Sie nicht in ein einzelnes Ethernet-Paket (151kbyte) passen. Ein normales VGA Bild mit 640x480 Pixel hat schon mal ein paar KB, so dass daraus meist um die 10 Ethernet-Pakete werden. Wer also nur 1% der Pakete auf der Leitung verliert, verliert im Schnitt 10% dieser "Vollbilder". Ohne Fehlersicherung würde das Video also immer mal wieder "hängen" bleiben. Daher sendet z.B. RTVIDEO zusätzliche Pakete, um den Verlust zu kompensieren. Wenn jemand 10 Pakete sendet und ein 11tes Paket die Prüfsummer (wie bei einem RAID) enthält, dann kann ein Verlust eines Pakets heraus gerechnet werden.
Auch der Endpunkt ist zu betrachten. Selbst die Komprimierung von 640x480 Videobildern mit 30 fps erfordert schon einen Dual-Core, wenn man daneben noch etwas anderes machen will. Bei HD, was bei Videokonferenzen meist nur 720p (1280x720) anstelle von 1080 (1920x1080) bedeutet, kann auch einen Quad-Core schon gut auslasten.
Die erforderliche Bitrate ist auch hier wieder Abhängig von den "Änderungen" auf dem Bild und wie der Codec damit umgeht, z.B. indem er Informationen weglässt (unscharf) oder die Bitrate erhöht. Auch ist die Auflösung nicht an einen Codec gebunden./p>
| Codec | Format xx/y/fps |
Bandbreite (Max ohne FEC) | Einsatzzweck |
|---|---|---|---|
| RTVideo QCIF | 176x144 | Es gibt Konferenzsysteme, die die Bilder mehrerer Teilnehmer in ein neues Bild zusammensetzen. Da das resultierende Bild dann mehrere Kacheln mit weniger Auflösung je Bild hat. Dann reicht es vielleicht, wenn die Teilnehmer alle nur ein "Viertel-CIF" senden. Das Format ist interessanterweise auch auf die Auflösung früherer kleiner Handy-Displays. Aber ich habe schon lange nicht mehr gesehen, dass es eingesetzt wurde. | |
| RTVideo CIF | 352x288 | 260kbs | Der Standardcodec für Videos im CIFS-Format. Auch wenn die Anzahl der Pixel lächerlich wenige erscheint, so reicht dies für einfache Meetings schon aus. |
| RTVvdeo VGA | 640x480/30fps | 600kbs | Wer mehr
braucht, kann
einfach zu VGA
schalten. Dies
machen die
Clients aber
nur, wenn Sie
das Fenster auch
entsprechend
"groß" ziehen
und in einer
Konferenz genug
Personen dies
anfordern. Beachten Sie, dass aber auch ein DSL6000-Anschluss nur 576kByte Upstream bereit stellt. |
| RTVideo HD | 1280x720/30fps | 1500kbs | Die
720p-Auflösung
erfolgt nur,
wenn der
sendende Client
einen Quadcore
hat und der
Empfänger auch
das Fenster
entsprechend
"groß" gemacht
hat. Der
Bandbreitenbedarf
ist aber
zumindest beim
Sender nicht zu
unterschätzen
und oft immer
noch mehr als
DSL-Anschlüsse
hergeben. Erst DSL 16000 kann wohl bis zu 3,5 MBit als Upload liefern. |
| PANO | 1056x144 (22:3) 15fps | 350kbit | Besonderes Format, welches beim Einsatz der Roundtable zum Einsatz kommt und dann als zusätzlicher Datenstrom gesendet und verteilt wird |
| H.263 | Diesen Codec
hat der Lync
Client noch mit
an Bord. Primär
als
Rückwärtskompatibilität
zu anderen
Clients. http://en.wikipedia.org/wiki/H.263 |
||
| H.264 | Lizenzpflichtig und nicht von Lync genutzt |
Bei Konferenzen beschränkt sich OCS und Lync aber darauf, die Daten des aktiven Sprechers (anhand der Audioinformation) anzufordern und an alle Teilnehmer zu verteilen. Die MCU ist hierbei also kein Mixer sondern ein Switch. Über das Steuerprotokoll RTCP werden die Clients angewiesen, ihr Bild zu senden oder eben auch nicht. Kleine Information am Rande: OCS/Lync bekommt auch das Bild des "vorherigen" Sprechers und sendet dieses an den aktiven Sprecher. Das ist nicht jedem Teilnehmer bekannt aber so hat der aktive Sprecher nicht sich selbst im Bild bekommt zumindest ein einer Person ein Feedback.
Zu dem Thema Codec könne man noch viel mehr schreiben und erläutern und auf all die Feinheiten und Kniffe, die z.B. Microsoft in seinen RTVideo eingebaut hat, kann ich hier nicht eingehen.
Alle Konferenzen beginnen übrigens erst mal mit "CIFS. Über das RTCP-Protokoll melden die Clients auch, welches Videoformat sie gerne hätten. Anhand einer Formel entscheidet dann die MCU, ob z.B. VGA angefordert und dann auch verteilt werden soll.
- Comparison of video codecs
http://en.wikipedia.org/wiki/Comparison_of_video_codecs
Wer mit wem und wann
Über SIP werden Verbindungwünsche ausgetauscht, die in einem SDP-Nutzlastl neben den IP-Adresse auch die verschiedenen Codes enthalten, die die Teilnehmer sprechen können. Je nach Umgebung kommt dann der passende Codec zum Einsatz, wobei sich die Wahl auch im Betrieb ändern kann. Ein Codec-Wechsel ist nichts ungewöhnliches. Ich habe mal versucht hier eine Übersicht zu erstellen, welcher Client mit welchem Server welchen Codec einsetzt.
Hinweis: Das sind die "normalen" Codec. Ein Wechsel aufgrund von schlechten Bandbreiten es ist ein einigen Fällen möglich.
| Wer mit Wem | Lync Client |
OCS Cient |
Mediation | Media Bypass |
Konferenz | ExUM |
|---|---|---|---|---|---|---|
| Unterstützte Codes | RTAudio | RTAudio | CU3:G711 CU4:RTAudio |
G711 | G722 Siren |
G.711 µ-law G.711 A-law G.723.1 |
| Lync Client | RTAudio | RTAudio | CU3:G711 CU4:RTAudio |
G711 | G722 Siren |
RTAudio16 |
| OCS Client | RTAudio | G711 | n/a | Siren | ? | |
| Mediation Server | RTAudio (?)(1) | G711 | (2) | ? | ||
| Konferenz |
Die noch nicht ausgefüllten Felder habe ich noch nicht ermittelt
- (1) Mediation zu Mediation
Dies ist durchaus möglich, wenn Sie z.B. analoge Telefone an Lync anschließen und diese "durch Lync hindurch" nach extern anrufen. Sie kommen dann über ein Gateway herein und gehen über ein andere Gateway hinaus. - (2(2) Dieser Fall beschreibt die "Dialin-Konferenz"
Lync Clients beachten zusätzliche aber eventuell eingerichtete Bandbreitenbeschränkungen (CAC). dann kann es schon sein, dass der Client vielleicht sogar nur SIREN einsetzt, weil die Bandbreite nicht mehr als 40kbit zulässt.
TCP oder UDP
Da Audio und Video eher "flüchtige" Informationen sind, ist ein Verlust einiger Pakete problemlos zu tolerieren. Daher ist auch keine Transportsicherung über TCP erforderlich. Welches Protokoll genutzt wird, ist aber bezüglich des Codec irrelevant. Diese sind ja nur die Nutzlast und können sowohl über UDP als auch über TCP übertragen werden.
UDP ist aufgrund seiner Funktion natürlich präferiert und es sind keine TCP-Quittungen und erst recht keine "Retransmissions" erforderlich. Was bringt ihnen ein erneut übertragenes Paket, welches Töne enthält, die in der Vergangenheit liege. Trotzdem kann es vorkommen, dass die Daten über TCP übertragen werden, z.B. wenn UDP durch die Firewall geblockt wird.
Auch wer mit VPNs arbeitet, wird gar nicht merken, dass die UDP-Daten wieder in TCP-Pakete eingepackt werden. Dabei werden Sie im schlimmsten Fall noch fragmentiert (MTU-Size). Es ist daher immer zu überlegen, wie z.B. die bei OCS/Lync eh verschlüsselten Audio/Video-Daten am VPN vorbei kommen können, z.B. indem mal die Edge-Server aus dem VPN ausschließt. Das betrifft Routing, Firewallregeln aber auch die DNS-Auflösung.
Latenzzeit
Die Verzögerung von Audiosignalen ist ein weiteres Thema, welche direkt mir der "gehörten Qualität" verbunden ist und oft allein auf den Codec geschoben wird. Natürlich ist auch ein Codec und die Paketgröße für eine gewisse Signalverzögerung verantwortlich. Schließlich muss er die Audiodaten ja erst einsammeln, abtasten und als Paket formatieren. Kommen dann noch "Fehlerkorrektur" und Jitter-Buffer dazu, dann ist auch auf der Empfangsseite eine Verzögerung zu erkennen. Aber das sind bei weitem nicht die einzigen Verzögerungen. Schauen wir uns exemplarisch mal die Schritte an:
| Position | Verzögerung | Total |
|---|---|---|
| Die Töne verlassen den Mund des Sprechers | 0ms | 0ms |
| Übertragung bis zum Mikrofon. (Schallwellen ist kein Licht und viel schneller als 300m/s breiten sich Druckwellen in unserem Lebensraum nicht aus. Bei einem Meter Abstand wären da schon die ersten 3ms, die aber niemand wirklich wahrnimmt. Sie würden auch nur eingehen, wenn Sie quasi "Freisprechen" mit einem weiter entfernten Mikrofon nutzen würden. | 0ms | 0ms |
| A/D-Wandlung. Das Mikrofon nimmt die analogen Druckschwankungen auf und setzt diese in elektrische Signale um, was noch relativ schnell geht. Die Umsetzung in ein USB-Bus-Paket und Übertragung zum PC kann aber je nach Soundgerät schon deutliche Verzögerungen haben. Insbesondere wenn das Mikrofon selbst noch "Soundverbesserungen" wie Echounterdrückung und Popp/Knack-Schutz-Filter enthält. "UC-Headsets" achten z.B. darauf, dass hier die Verzögerung nicht allzu groß wird. (Das kann man tatsächlich in Laboren messen und Microsoft macht das auch. | 5-15ms | |
| Der Codec ist nun an der Reihe, die digitalen Signale zu komprimieren, in die entsprechenden Häppchen aufzuteilen und möglichst schnell zu versenden. Das kostet aber in der Regel mindestens die Paketgröße von 20ms als Verzögerung. | 20ms + | |
|
Netzwerkkarte
1ter Hop Heute haben wir alle in der Regel ein "geswitchtes" Netz, so dass Kollisionen oder ein durch andere Stationen "belegtes Medium" nicht mehr vorkommen sollte. Auch das früher bekannte "Backpressing" von Switches sollte kaum noch passieren. Aber FlowControl ist weiter hin da und auch andere Programme auf ihrem PC senden natürlich Daten. ein "XCOPY" oder ein Speichern einer größeren Powerpoint sind durchaus ernstzunehmende Störfaktoren. Auch wenn Audio nur viele kleine Pakete sind, so unterbricht es nicht den Versand von 1514 Byte-Datenbanken durch den PC. Da muss dass RTP Paket dann eben warten. Bei 100 MBit sind das aber dann dennoch weniger als 0,15ms und damit zu vernachlässigen. |
||
| Auch die Übertragung zum Switch und die dortige Weiterleitung ist selbst bei 100 egabBit kein Problem, zumindest wenn genug Bandbreite bereit steht. Stören könnte aber die Empfangsrichtung sein, wenn der Switch die Pakete einfach in der Reihenfolge in die Queue stellt und die kleinen RTP-Paket nicht vorlässt. Beim Senden kann ein Windows Client ja noch selbst die Reihenfolge bestimmen. Dies gilt aber nicht für den Empfang oder die weiteren Hops. Trotzdem belasse ich hier die Latenz bei 0ms | 0ms | |
| WAN Latenz Anders sieht das natürlich aus, wenn eine WAN-Verbindung hier mit involviert ist. Hier sind nicht nur die Bandbreiten geringer, was eine höhere durchschnittliche Belastung und damit ein höheres Risiko einer Blockierung mit sich zieht, sondern die "Schrittgeschwindigkeiten" sind auch geringer, d.h. die Bits sein langsamer und länger auf der Leitung unterwegs. Da ist einfach die Physik am Limit, denn selbst mit Lichtgeschwindigkeit braucht es ein Zeit die Bits über lange Strecken zu übertragen. Und dann kommen noch die elektrischen Wandler und Verstärker dazwischen. Aber selbst das sind immer noch kleine Werte im Vergleich zur Laufzeit. Eine 2 MBit Leitung kann 2 Mio Bit/Sek übertragen. Ein ca. 1,5kByte (vereinfacht 15000bit) Paket blockiert so eine Leitung schon für 7,5ms und wenn der Schedule dann zwischen "großen Daten" und kleinen Audiopaketen einfach numerisch 1:1 tauscht, dann wird es eng für mehrere Audiokanäle. Hier ist also Priorisierung, z.B. nach IP-Ports oder QoS angeraten, wenn sie nicht gleich dedizierte Bandbreite reservieren. Aber selbst ein ca. 200Byte (=2000bit) großes RTP-Paket braucht immer noch 1ms im idealen fall |
1+x ms |
|
| Die Jitter-Queue
beim Empfänger Wenn wir nun auch den Switch und das LAN beim Empfänger außen vor lassen, dann landet das Paket direkt im IP-Stack und wird hier erst mal nicht direkt wiedergegeben. Der Codec muss ja zum einen die empfangenen Pakete eventuell erst in die richtige Reihenfolge bringen und da er auf unterschiedliche Laufzeiten reagieren muss, "verzögert" er absichtlich die Wiedergabe, um Spätankommer noch "in time" abspielen zu können. Dieser Buffer variiert von Codec zu Codec. Einige haben einen statischen Wert und andere passen den Buffer an die Qualität an. In der Regel werden aber immer mindestens 1-2 Pakete im Vorlauf gehalten und beim Einsatz einer Fehlerkorrektur noch mehr. Wenn wir mal davon ausgehen, dass ein Paket wieder 20ms von 160 Samples enthält, dann ist allein der Empfänger für eine Verzögerung von 40-60ms verantwortlich. |
40-60ms + | |
|
Dekomprimierung
und Wiedergaben Die Umwandlung der Daten in Töne und die Wiedergabe über ein Headset oder Lautsprecher unterliegt den gleichen Bedingungen wie die Aufnahme. Analoge Lautsprecher an einer PCI-Soundkarte haben weniger Latenzzeiten als USB-Geräte aber in der Regel bewegen sich diese auch im kleinen ms-Bereich |
ca 4ms |
Auch wenn nicht alle Zahlen repräsentativ sind und mit einfachen Mitteln gemessen werden können, so sollten Sie für eine gute Sprachqualität die verschiedenen kniffligen Punkte kennen und nicht leichtfertig an der ein oder anderen Stelle einen Kompromiss eingehen.
Das Messen von solchen Latenzen ist zum einen schwer, weil es sehr kurze Zeiten sind und einzeln nicht mit dem menschlichen Gehör ermittelt werden können. Der Aufbau einer Schleife, bei der auf der Empfängerseite das erhaltene Signal einfach wieder zum Sender zurück gesendet wird um dort dann die Summe beider Richtungen zu messen, scheitert meist an der sehr guten Echo Cancellation der RTAudio-Codecs. Über Programme wie "virtual Audiocable" können Sie sowohl solche Schleifen als auch Verbindungen zu Analyseprogrammen "schalten" aber der Messaufbau ist alles andere als Repräsentativ.
Wenn Sie ein "gutes" Headset und einen halbwegs aktuellen PC verwenden und Virenscanner, Firewalls etc. ihnen nicht dazwischen funken, dann können Sie sich fast immer auf das Netzwerk konzentrieren. Und hier liefern zum einen Lync mit dem Monitoring-Service schon sehr viele Werte und wenn QoS nicht die messingen verfälscht, kann auch die Laufzeit eines einfachen PING mit z.B. 200 Bytes als Nutzlast eine erste Abschätzung geben.
Netzwerk simulieren
Nicht jeder hat verschiedene Bandbreiten zur Simulation zur Verfügung. Und es gibt auch immer weniger PCs, die noch einen COM-Port haben, über den sich zwei Systeme mit einem DFÜ-Netzwerk (RAS als Router) mit unterschiedlichen Bandbreiten verbinden lassen. Und selbst dann kann man nur mit einer relativ fixen Bandbreite arbeiten aber unterschiedliche Latenzzeiten oder Paketverluste lassen sich damit kaum simulieren.
Aber es gibt Abhilfe. So enthält Visual Studio 2010 angeblich eine Netzwerkbremse, die ein langsames Netzwerk auf dem PC simuliert:
- Introducing True Network
Emulation in Visual Studio 2010
http://blogs.msdn.com/b/lkruger/archive/2009/06/08/introducing-true-network-emulation-in-visual-studio-2010.aspx - Standalone Network Emulator
Tool
http://blogs.technet.com/b/juanand/archive/2010/03/05/standalone-network-emulator-tool.aspx - Ivan Negalov's Stand-Alone
Network Emulator bits
http://neganov.blogspot.com/2010/01/stand-alone-network-emulator-for-vs2010.html
In verschiedenen Laboren habe ich das Programm NEWT gesehen (Network Emulator for Windows Toolkit), welches leider wohl nicht mehr frei ist. Es ist wohl Teil des Games for Windows LIVE SDK und XBOX XDK, die beide nicht kostenfrei sind. (Quelle: http://blogs.technet.com/b/juanand/archive/2010/03/05/standalone-network-emulator-tool.aspx). Die folgende Seite listet NEWT als ein Produkt auf, welches von MS Research in ein kommerzielles Produkt gewandert ist
- Technology Transfer 2008
http://research.microsoft.com/en-us/about/techtransfer/techtransfer2008.aspx
ich kann hier zumindest mit ein paar Screenshots dienen. Man baut damit zwischen die Applikation und der Netzwerkkarte eine Drossel auf. Zuerst definiert man Filter für die gewünschten Ziele, die man drosseln oder blockieren will,

Das kann also z.B. der Lync Kommunikationspartner, Konferenzserver oder Mediation Server sein. Beachten Sie hier auch die Karteikarten am unteren Rand, die später eine Analyse der Eingriffe erlauben. Im zweiten Schritt werden dann zur Anwendung hin die verschiedenen "Belastungen" eingestellt:

Anhand der Reiter können Sie schon sehen, dass man Pakete "verlieren" kann, Fehler verursachen, Latenzzeiten beeinflussen, Bandbreite drosseln oder die Reihenfolge verwürfeln kann.
Leider ist diese Programm nicht in einer mir bekannten Quelle enthalten.
Weitere Links
- Understanding Unified
Messaging Audio Codecs
http://technet.microsoft.com/en-us/library/aa998670.aspx - Planning for Call Admission
Control
http://technet.microsoft.com/en-us/library/gg398334.aspx - Comparison of video codecs
http://en.wikipedia.org/wiki/Comparison_of_video_codecs - RTAudio-Codecs
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=7515 - Verschiedene Codecs
http://en.wikipedia.org/wiki/G.711
http://en.wikipedia.org/wiki/G.722
http://en.wikipedia.org/wiki/Siren_Codec
http://en.wikipedia.org/wiki/Rtaudio
http://en.wikipedia.org/wiki/T.38
http://en.wikipedia.org/wiki/G.723.1
http://en.wikipedia.org/wiki/G.726 - Audio-Codecs zur
Sprachdigitalisierung
http://www.elektronik-kompendium.de/sites/net/0905121.htm









