Wie funktionieren CD-Datenbanken

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wie funktionieren CD-Datenbanken

    genauer: Wie funktioniert die Titel/CD Erkennung bei CD-Datenbanken?

    Beispiel iTunes: Ich lege eine CD ein, sogar eine kopierte und iTunes erkennt die CD und die Titel. OK, original CDs haben einen CD-Code, dieser kann beim 1:1 Kopieren mit übernommen worden sein.
    Aber nun der Clou:
    Ich hatte vor Jahren mal eine CD per analoger Audioverbindung auf Minidisc kopiert. Diese MD habe ich dann in den Rechner (ebenfalls Analogverbindung) gespielt. Diese Tracks als AIFF nun wieder auf CD gebrannt. Lege ich diese CD ein und sage "Get CD Tracknames" findet es tatsächlich den CD und Tracknamen.

    Wie geht das???

    Was wird da genau abgefragt und woran werden die Titel erkannt?

    Ich hatte mal die Vermutung angestellt, dass evtl. die Spieldauer und Anzahl der Tracks verglichen werden. Aber spätestens nach der manuellen Aufnahme der CD hat kein Titel mehr die exakte Länge. Also schließe ich das mal wieder aus.

    Viele Grüße,
    Andi

  • #2
    http://freedb.org/modules.php?name=S...rticle&artid=6
    Dieses Schreiben wurde automatisch erstellt und ist ohne Unterschrift gültig.

    Kommentar


    • #3
      Sorry, da ich kein C Progrmmiere bin, sagt mir das Script nicht gerade viel, was da passiert.
      Es wird nur eine Disc ID anhand des TOC erzeugt und zum Schluß noch irgendwas mit dem Lead-Out angestellt.
      Kann mir das vielleicht jemand etwas genauer erklären?

      Ist das alles oder nur eine von mehreren Moglichkeiten eine CD zu erkennen?

      Dank & Grüße,
      Andi

      Kommentar


      • #4
        hmm unter Linux könnte man sich den Hashwert aus einem Image/CD erstellen lassen und diesen vergleichen mit dem Vergleichswert....

        die Wahrscheinlichkeit das der Wert übereinstimmt ist sehr unwahrscheinlich..........

        Code:
        int
        cddb_sum(int n)
        {
        intret;
        
        /* For backward compatibility this algorithm must not change */
        
        ret = 0;
        
        while (n > 0) {
        ret = ret + (n % 10);
        n = n / 10;
        }
        
        return (ret);
        }
        
        unsigned long
        cddb_discid(int tot_trks)
        {
        inti,
        t = 0,
        n = 0;
        
        /* For backward compatibility this algorithm must not change */
        
        i = 0;
        
        while (i < tot_trks) {
        n = n + cddb_sum((cdtoc[i].min * 60) + cdtoc[i].sec);
        i++;
        }
        
        t = ((cdtoc[tot_trks].min * 60) + cdtoc[tot_trks].sec) -
            ((cdtoc[0].min * 60) + cdtoc[0].sec);
        
        return ((n % 0xff) << 24 | t << 8 | tot_trks);
        }
        Den gleichen Weg vollziehen auch diese beide Funktionen man zieht hier wiederrum die Min, Std. und Sekunden heran.
        Da es unwahrscheinlich ist das CD Tracks die exakt gleich Dauer haben wie eine andere und die Trackanzahl genau übereinstimmt. Dürfte das auch funktionieren.
        Eine bessere Möglichkeit fällt mir auch nicht ein....Würde man eine Zufallszahl aus den Bereichen noch generieren wäre die Identifikation mehrerer gleicher CDs nicht mehr gegeben

        Vielleicht stellst du deine Frage einfach in
        http://www.c-plusplus.de

        die erklären dir das denke ich besser wie ich, bin im moment auch nicht wirklich darin involiert
        [color=blue]MfG Payne_of_Death[/color]

        [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
        [color=red]Merke:[/color]
        [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

        Murphy`s Importanst LAWS
        Jede Lösung bringt nur neue Probleme
        Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
        In jedem kleinen Problem steckt ein großes, das gern raus moechte.

        Kommentar

        Lädt...
        X