zurück

Lehrgebiet Mediale Systeme II

SS 2009 - Aufgabe 13.3

  1. Audio-Kompression: Ogg Vorbis

    Im folgenden soll nun die bereits in früheren Aufgaben verwendete Audiodatei komprimiert werden. Dazu habe ich mich für den offenen Standard Ogg Vorbis entschieden und mit dem einfachen Kommandozeilenkonverter oggenc (Teil der vorbis-tools1 (Linux)) die .wav-Datei umgewandelt:

    Mein Name (28 Kilobyte, Ogg-Komprimiert)

    Wie bereits bei der ursprünglichen Datei geschehen, soll auch hier wieder der Header untersucht werden. Zur Untersuchung benutze ich dieses mal den Kommandozeilenhexeditor shed2. Nach der Spezifikation3 ist eine solche Ogg-Datei in vier Teile aufgeteilt, drei Headern und dem eigentlichen Audiobereich. Jeder der Header hat dabei zuerst eine Identifikationsnummer (1, 3 oder 5) und dann den Text "vorbis" an seinem Anfang stehen. Der erste Header, der nach einigen das Format einleitenden Bytes kommt, ist der sogenannte Identification Header, welcher Versionsnummer, Kanalanzahl, Abtastfrequenz und einige optionale Richtwerte für die Bitrate enthält. In meiner Datei sieht dieser Teil so aus:

    Der Identification Header

    Genau wie der nun folgende Comment Header wird dieser mit einem letzten Byte "1" abgeschlossen. In diesem stehen sowohl die Herkunft des Kodierers, als auch Benutzerdefinierte Tags, die ähnlich wie Unix-Variablen gesetzt werden (variable=wert). In diesem Fall findet sich hier allerdings kein solcher Tag, den man erst hinzufügen muss.

    Der Comment Header

    Der letzte der Dreien ist der Setup Header, in dem viele Informationen zu dem benutzen Kodierverfahren geben sind, welche natürlich auch für die Dekodierung wichtig sind. Diese werden in sogenannten Codebooks gespeichert, von dem der Anfang des ersten im folgenden Screenshot zu sehen ist:

    Der Setup Header
  2. Metadaten: mp3 und AAC

    Oft will man Audiodateien genauer beschreiben als nur durch den Namen der Dateien, als der sie gespeichert sind. Dazu verwendet man Metadaten, welche in den Aufbau der Datei mit eingeflochten werden. Im obigen Fall von Ogg funktioniert dies über die dort kurz angeführten vorbis-comments. Bei mp3-Dateien wurde man sich der Nützlichkeit einer solchen Funktion nach Fertigstellung des Standards bewusst und hat die Möglichkeit geschaffen mitsogenannten ID3-Tags Metadaten hinzuzufügen, die Datei zu "taggen".

    Im aktuellen Standard ID3v2.4.04 werden solche Tags in Frames aufgeteilt, deren Frameidentifier (siehe Grafik) ein vier Zeichen großes Codewort enthält, welches definiert welche Information hier gespeichert ist. Beispielsweise ist das der Titel oder der Künstler, bei einem Musikstück. Jeder Frame enthält so eine Information an seinem Ende, die von allen mir bekannten Audioprogrammen gelesen werden kann. Der weitere Aufbau eines solchen Tags, kann der folgenden Grafik entnommen werden (Anklicken zum Vergrößern):

    Der Nachfolger von .mp3, .aac (Advanced Audio Codec) enthält ebenfalls an sich keine spezifische Art um Metadaten zu transportieren. Einige Musikprogramme haben so ihren eigenen Standard kreiert, so dass man hin und wieder den Hinweis finden kann, ein bestimmtes Tag-Programm könnte AAC-Dateien nach ITunes-Art taggen und deren Tags lesen.

    Allerdings wurden durch die neuere Spezifikation MPEG-7 ein allgemeines Framework zum hinzufügen von Metadaten zu MPEG-Daten erstellt, welches auch eine Sektion für Audiodateien besitzt5. Diese Tags dienen allerdings einem ganz anderen Zweck, als die bisherigen, so dass eine Koexistenz wahrscheinlich sein wird. Wenn die geeigneten Programme zur Verfügung stehen, wird man durch die MPEG-7-Tags einige neue Funktionen zur Anwendung bringen können, wie zum Beispiel das "Query-By-Humming".

    Bei diesem summt man die Melodie des gewünschten Musikstückes zum Beispiel in sein Handy, welches die entstehende Audiodatei mit eben diesen Tags versieht und jene mit einer Datenbank vergleicht um ähnliche Lieder herauszufinden. Es sind also solche Tags gefragt, welche Stückweise die Audiospur mit Eigeschaften wie ein Frequensspektrum und Harmonischen Charakteristika versehen. Eine grobe Übersicht darüber welche Tags bereits spezifiziert sind, ist in der folgenden Grafik zu finden:

/\
  1. zurück
    Anleitung zur Installation auf der offiziellen Seite: http://www.vorbis.com/setup_linux/ (Stand: 19.6.2009)
  2. zurück
    shed von Alex Sisson
    "shed is an easy to use hex editor written for unix/linux using ncurses, with a friendly pico-style interface."
    http://shed.sourceforge.net/ (Stand: 19.6.2009)
  3. zurück
    Vorbis I Specification, Xiph.org Foundation
    Besonders Kapitel 4: Codec Setup and Packet Decode
    http://xiph.org/vorbis/doc/Vorbis_I_spec.html (Stand: 19.6.2009)
  4. zurück
    Quelle zum Abschnitt: ID3 tag version 2.4.0 - Main Structure, M. Nilsson
    http://www.id3.org/id3v2.4.0-structure (Stand: 19.6.2009)
  5. zurück
    Quelle zu MPEG-7: MPEG-7 Overview Version 10, José M. Martínez
    Vor allem Kapitel 3.3.1: MPEG-7 Audio Framework
    http://www.chiariglione.org/mpeg/standards/mpeg-7/mpeg-7.htm (Stand: 19.6.2009)
  6. Graphiken erstellt mit Dia Version 0.96.1
    "Dia is a gtk+ based diagram creation program released under the GPL license"
    http://www.gnome.org/projects/dia/ (Stand: 19.6.2009)