【问题标题】:How to verify the stats of a fifo using sox?如何使用 sox 验证 fifo 的统计信息?
【发布时间】:2017-07-11 09:22:10
【问题描述】:

我使用 arecord 录制了一个 wav 文件,然后我将使用它重定向到一个 fifo

arecord -d 1 -c 2 -r 48000 -f S32_LE > myfifo

但是我怎样才能使用 sox 获得这个统计数据呢?

sox myfifo -n stat

给予

sox FAIL formats: can't open input file myfifo: WAVE: RIFF header not found

请参阅this Question,了解我是如何做到的。

我需要给 sox 哪些选项来忽略标题。 如果可能,我想将标题详细信息作为命令行提供。

【问题讨论】:

  • 我已经复制并粘贴了您的命令,它们对我有用。样品读取:96000长度(秒):1.000000缩放:2147483647.0最大幅度:0.179199最小幅度:-0.157074中线幅度:0.011063平均规范:0.011798平均幅度:-0.000868幅度:0.016321最大Δ:0.0165426最小三角形:0.000000平均三角洲:0.010183 RMS delta:0.015230 粗略频率:7128 音量调整:5.580
  • 嗯。我认为你错过了该文件是一个先进先出,我将输出重定向到先进先出
  • 如果还有什么我可以做的,请告诉我。目前我无法重现您的问题。
  • 嗯,打开两个终端,一个终端 mkfifo temp.wav ; arecord -c 2 -r 48000 -f S32_LE > temp.wav 和另一个终端 sox temp.wav -n stat 这将产生这个问题。

标签: python linux python-multithreading sox


【解决方案1】:

sox 应该被告知该文件是原始类型。 使用sox -t raw

现在让我们解决这个问题。

使用 mkfifo 创建一个 fifo,然后在其中记录一些内容

mkfifo temp.wav
arecord -c 2 -r 48000 -b 32 > temp.wav

现在在上面涂上袜子。

sox -t raw -r 48000 -b 32 -c 2 -e signed-integer temp.wav -n stat trim 0 1

因为它是原始的,您需要指定速率、位深度、通道和编码格式。

现在它可以正常工作而不会出现任何错误。

干杯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多