2 Stimmen

Der Unterschied zwischen DataLine und (Output|Input)Stream?

Ich beschäftige mich gerade mit der Klangverarbeitung mit Hilfe von Java. In meinem Projekt muss ich mit dem Stream umgehen. Ich habe also mit einer Menge von Stäben zu tun DataLine y OutputStream o InputStream . Aber für mich sind sie zu ähnlich:(

Gibt es jemanden, der mir bei dieser Frage helfen kann? Vielen Dank im Voraus! Hier sind einige Codes, die ich verwendet habe

        TargetDataLine line;
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        int frameSizeInBytes = format.getFrameSize();
        int bufferLengthInFrames = line.getBufferSize() / 8;
        int bufferLengthInBytes = bufferLengthInFrames * frameSizeInBytes;
        byte[] data = new byte[bufferLengthInBytes];
        int numBytesRead;
try {
        line = (TargetDataLine) AudioSystem.getLine(info);
        line.open(format, line.getBufferSize());
    } catch (LineUnavailableException ex) {
        shutDown("Unable to open the line: " + ex);
        return;
    } catch (SecurityException ex) {
        shutDown(ex.toString());
        return;
    } catch (Exception ex) {
        shutDown(ex.toString());
        return;
    }
       line.start();
       while (thread != null) {
            if ((numBytesRead = line.read(data, 0, bufferLengthInBytes)) == -1) {
                break;
        }
        out.write(data, 0, numBytesRead);
       }

Ich habe die Dokumentation der Klasse gelesen ZielDatenZeile heißt es:"'read(byte[] b, int off, int len)' Liest Audiodaten aus dem Eingangspuffer der Datenleitung."

Aber wo definieren wir sie?

Auch die Zeile vom Typ TargetDataLine wurde keinem Mischer zugeordnet, wie können wir also wissen, für welchen Mischer sie bestimmt ist?

2voto

Joachim Sauer Punkte 290477

A DataLine ist eine Schnittstelle zum Umgang mit gesampelten Tönen (auch bekannt als PCM-Daten) in Java. Ich weiß nicht wirklich eine Menge davon.

Eine OutputStream ist eine Schnittstelle, die alles darstellt, in das Bytes geschrieben werden können. Ein einfaches Beispiel für eine OutputStream ist eine FileOutputStream : Alle Bytes, die in diesen Stream geschrieben werden, werden in die Datei geschrieben, für die er geöffnet wurde.

Eine InputStream ist das andere Ende: Es ist eine Schnittstelle, die alles repräsentiert, von dem Bytes gelesen werden können. Ein einfaches Beispiel für eine InputStream ist eine FileInputStream : Es kann verwendet werden, um die Daten aus einer Datei zu lesen.

Wenn Sie also Audiodaten von der Festplatte lesen wollen, müssen Sie eventuell eine FileInputStream um die Daten zu lesen. Wenn Sie die Daten manipulieren und später auf die Festplatte zurückschreiben wollen, verwenden Sie eine FileOutputStream um das eigentliche Schreiben zu übernehmen.

1voto

Andreas Dolk Punkte 110776

Eine InputStream stellt einen Strom von Bytes dar, bei dem wir lesen Bytes eins zu eins (oder in Blöcken), bis es leer ist. Eine OutputStream ist die andere Richtung - wir schreiben. Bytes eins zu eins (oder in Blöcken), bis wir nichts mehr zu schreiben haben.

Streams werden verwendet, um unstrukturierte Byte-Daten zu senden oder zu empfangen.

DataLine Griffe Audiodaten mit anderen Worten: Bytes mit einer besonderen Bedeutung. Und es bietet einige spezielle Methoden zur Steuerung der Leitung (Start/Stop), zum Abrufen des aktuellen Formats der Audiodaten und einiger anderer Merkmale.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X