Трубопроводы SoX и потеря данных

1534
Fabien Snauwaert

Когда я передаю операции с использованием SoX, я заметил, что файлы становятся короче, чем должны:

Работает отлично:

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

Полученный файл становится короче:

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 

Протестировано с версией SoX 14.4.1 на Windows 7 64 Family Edition. (В Windows создайте копию sox.exe с именем soxi.exe для работы soxi.)

Я избавлю вас от остальных деталей, но в основном КАЖДАЯ труба работает с потерей 0,001451 сек. (Немного меньше при более высоких частотах дискретизации.) Для всего, где важна точность, эти миллисекунды суммируются и становятся значительными, создавая лаги между тем, где вы ожидаете, что аудио будет, и тем, чем оно является на самом деле.

Перед тем, как отправить отчет об ошибке в команду SoX, я бы хотел выяснить, действительно ли это ошибка или она не связана с командной строкой. Будет ли кто-нибудь достаточно любезен, чтобы запустить оба набора команд в своей системе и опубликовать результаты?

Заранее спасибо -

1
Я не вижу этой проблемы с sox v14.4.1, работающим в последней системе GNU / Linux, т.е. оба примера дают `1.000000`. Thor 10 лет назад 1

1 ответ на вопрос

0
turtur_ninja

On a windows 7 64 bits:

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

Indeed gives me the same kind of buggy results (19.997s).

BUT

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

Gives me the right results (20.0s).

From what I have read on some websites, you should specify the type of the pipe you use. And since "-p" is equivalent to "-t sox -", you ought to add "-t sox" in the "pipe using" sox call.