Warum können Sie CD-Audio nicht einfach wie eine gewöhnliche Daten-CD "dd"?

884
Lapsio

Mein Freund hat versucht, nbdCD- ROM-Geräte über das Netzwerk mithilfe eines Servers zu exportieren. Wir haben jedoch festgestellt, dass Audio-CDs zwar nicht für Daten-CDs geeignet sind, sich jedoch nicht so verhalten, wie dies bei herkömmlichen Datenplatten der Fall ist. Ich spreche nicht über das Vorhandensein oder das Fehlen eines Dateisystems, sondern über den Zugriff auf Block-Ebene.

Ich verstehe zwar, dass Audio-CDs nicht wirklich auf Dateiebene interpretiert werden können, also nicht wirklich eingebunden werden können. Ich verstehe jedoch, dass sie viele zusätzliche Informationen enthalten, die für Audio spezifisch sind, und ich verstehe, dass sie wirklich keine haben CRC auf die gleiche Weise wie Datenplatten, also ist der gesamte Datenlesevorgang anders. Ich verstehe immer noch nicht, warum sie nicht wie ein gewöhnliches Blockgerät von /dev/sr0oder gelesen werden können /dev/cdrom. Was ist an CDDA so besonders, dass sie von normaler Software nicht einfach auf Blockebene gelesen werden können?

Ich meine, am Ende ist es nur ein Stream von Bytes - wenn kein Blockgerät, dann wie jedes Zeichengerät. Warum kann dd/ cat/ nbdsie nicht wie andere Block- / Zeichengeräte verwenden? Gibt es einen tatsächlichen technischen Grund oder ist es einfach so, weil niemand einen rationalen Anwendungsfall für die Implementierung eines solchen Zugriffs auf CDDA-Medium in Linux gefunden hat?

4

2 Antworten auf die Frage

4
dirkt

Audio-CDs (im Red Book auch als CD-DA bezeichnet) sind das älteste Format der CD. Das Format ist von der Audioaufzeichnung inspiriert, so dass Sie eine Spiralspur mit kontinuierlichen Daten haben und mit diesen Daten verschachtelt sind Timing-Informationen. Es gibt keine richtigen Blocküberschriften. Die kleinste Informationseinheit ist ein Frame oder 1/75 Sekunde, das 2352 Datenbytes enthält (für 2 Kanäle 2 Samples / Byte 44,1 kHz).

Beachten Sie, dass dies keine Zweierpotenz ist und nicht einmal durch 256 oder 512 geteilt wird. Es ist daher etwas umständlich, Audioframes als Datenblöcke zu behandeln. Außerdem können frühe CD-Laufwerke nicht immer richtig positioniert werden. Wenn Sie also sagen, "Lesen Sie das Bild nach 12 Minuten, 4 Sekunden und 5 1/75 Sekunden", wird es manchmal ein paar Bytes zu früh oder zu spät gestartet. Deshalb gibt es so viele Programme, um Audio-CDs (wie cdparanoia) "richtig" zu lesen .

Stellen Sie sich dies nun mit einer Daten-CD (auch als CD-ROM bezeichnet, die im Gelben Buch angegeben ist) gegenüber: Sie nahmen die 2352 Bytes eines Audio-Frames und einige davon für Header-Informationen, um einen Block zu identifizieren. Sie fügten auch eine weitere Stufe der Fehlerkorrektur hinzu, sodass die 2352 Bytes eines Audiorahmens 2048 Bytes in einem Datenframe werden.

Jetzt haben wir eine Zweierpotenz als Blockgröße, wir haben richtige Header und können exakte Suchvorgänge ausführen, und wir können wirklich so tun, als sei dies nur ein Blockgerät.

Aus diesem Grund wird eine Audio-CD standardmäßig nicht als Blockgerät behandelt, während dies bei einer Daten-CD der Fall ist.

Es gibt jedoch keinen Grund, die Informationen auf der Audio-CD nicht im Dateisystem verfügbar zu machen, beispielsweise als WAV-Datei für jeden Track. In der Tat gibt es einige Open-Source-Projekte wie CDfs oder andere, an die ich mich momentan nicht erinnern kann, die FUSE verwenden, die die CD-Daten auf diese Weise darstellen. Sie sind jedoch immer noch mit dem Problem konfrontiert, dass es keine Jitterkorrektur usw. gibt, und Sie sollten so etwas besser verwenden cdparanoia.

Und die Kernel-Leute fanden es auch eine schlechte Idee .

+1 für die eigentliche Beantwortung der Frage „Gibt es einen tatsächlichen technischen Grund…?“ Aber es wäre eine bessere Antwort, wenn sie mit den roten und gelben Büchern verknüpft wäre. Scott vor 6 Jahren 0
@Scott: Die roten und gelben Bücher sind nicht öffentlich verfügbar, daher kann ich keine Links herstellen. dirkt vor 6 Jahren 0
OK danke. (Aber Sie möchten vielleicht diese *** Aussage in Ihre Antwort setzen.) Scott vor 6 Jahren 0
1
Ulf Tennfors

CDDA für Audio-CDs wurde erstellt, bevor ein Dateisystem für CD-ROM erstellt wurde (zuerst High Sierra und später ISO 9660). Davor verhält sich eine CD einfach nicht wie eine gewöhnliche Datenplatte. Danach mussten Audio-CDs noch mit alten CD-Playern abwärtskompatibel sein, sodass sie nicht mehr geändert werden konnten.

Aber - ist eine Musik-CD analog (wie eine Schallplatte / Schallplatte) oder digital? Wenn es digital ist, besteht es aus 17-Bit-Bytes? Wenn es sich um einen Stream von 8-Bit-Bytes handelt, warum kann ein Prozess diese Bytes nicht lesen? Scott vor 6 Jahren 0
@Scott Ich nehme an, Sie fragen rhetorisch, ob eine CD digital oder analog ist? Twisty Impersonator vor 6 Jahren 0
Ja bitte. Scott vor 6 Jahren 0
@Scott ist die Firmware des CD-Laufwerks und wahrscheinlich auch der CD-Treiber, der Sie daran hindert, solche Aktionen auszuführen. Es ist wie bei Bluray-Discs, die vollkommen normale Video-Streams / -Dateien enthalten, aber Sie können sie nicht lesen, ohne den Schlüssel zu dekodieren. phuclv vor 6 Jahren 0
Siehe [Warum können wir nicht über eine CD / DVD schreiben, nachdem sie gebrannt / finalisiert wurde?] (Https://superuser.com/q/1096996/241386). Dort verhindert die Firmware auch das Brennen einer verbrannten Stelle auf der CD / DVD Disc, um es zu löschen phuclv vor 6 Jahren 0
Mein Punkt ist (und war die ganze Zeit), dass der Beitrag von Ulf die Frage von ** Warum? Nicht beantwortet. ** "Es ist die Firmware des CD-Laufwerks" ist nur eine Handwelle, die auch nicht die Frage von * beantwortet. * Warum? **, und das erklärt auch nicht, wie ein Audio-CD-Player funktionieren kann. Die Tatsache, dass Sie Filme nicht eindeutig lesen können, weil sie verschlüsselt sind, hängt in keiner Weise mit der Tatsache zusammen, dass Sie keine Daten von einer Audio-CD * lesen können. * Vergleichen Sie mit [dirks Antwort] (https: // superuser.com/q/1302319/150988#1302431), die eigentlich die technisch detaillierte Antwort auf die Frage liefert. Scott vor 6 Jahren 0