SoX-Pipe-Operationen und Datenverlust

1632
Fabien Snauwaert

Beim Piping von Vorgängen mit SoX ist mir aufgefallen, dass Dateien kürzer werden, als sie sollten:

Funktioniert gut:

sox -n -r 44100 silence.wav trim 0 1 sox --combine sequence silence.wav combined.wav soxi -D combined.wav > 1.000000 

Die resultierende Datei wird kürzer:

sox -n -r 44100 silence.wav trim 0 1 sox --combine sequence "|sox silence.wav -p" combined.wav soxi -D combined.wav > 0.998549 seconds 

Getestet mit SoX Version 14.4.1 unter Windows 7 64 Family Edition. (Erstellen Sie unter Windows eine Kopie von sox.exe mit dem Namen soxi.exe, damit soxi funktioniert.)

Ich werde Ihnen den Rest der Details ersparen, aber es ist im Prinzip ein Verlust von 0,001451 Sekunden für JEDEN Pipe-Betrieb. (Bei höheren Abtastraten etwas weniger.) Für alle, bei denen Genauigkeit wichtig ist, addieren sich diese Millisekunden und werden signifikant, was zu Verzögerungen zwischen dem erwarteten und dem tatsächlichen Klang führt.

Bevor ich einen Fehlerbericht an das SoX-Team übermittle, möchte ich herausfinden, ob es sich wirklich um einen Fehler handelt oder sich nicht auf die Befehlszeile bezieht. Wäre jemand so nett, beide Befehlssätze auf ihrem System auszuführen und die Ergebnisse zu veröffentlichen?

Danke im Voraus -

1
Ich sehe dieses Problem nicht mit sox v14.4.1, das auf einem aktuellen GNU / Linux-System ausgeführt wird, dh beide Beispiele liefern '1.000000'. Thor vor 10 Jahren 1

1 Antwort auf die Frage

0
turtur_ninja

Unter Windows 7 64 Bit:

sox "|sox source -p trim 0 10" "|sox source -p trim 0 10" destination 

In der Tat gibt mir die gleiche Art von fehlerhaften Ergebnissen (19,997s).

ABER

sox -t sox "|sox source -p trim 0 10" -t sox "|sox source -p trim 0 10" destination 

Gibt mir die richtigen Ergebnisse (20,0s).

Von dem, was ich auf einigen Websites gelesen habe, sollten Sie den Typ der verwendeten Pipe angeben. Und da "-p" gleichbedeutend mit "-t sox -" ist, müssen Sie "-t sox" in den "Pipe using" -Sxx-Aufruf einfügen.