【问题标题】:pipe sox play command to stdout管道 sox 播放命令到标准输出
【发布时间】:2017-08-11 18:44:17
【问题描述】:

所以我目前正在尝试从我的树莓派(rasbian)流式传输我的麦克风输入 到某种网络流,以便稍后在我的手机上接收它。 为了做到这一点,我使用arecord -D plughw:1,0 -f dat -r 44100 | 顶部管道将我的 USB 麦克风的声流传输到标准输出,据我所知,它工作得很好,但我需要它更大一点,这样我才能理解远离它的人。

所以我像这样将它传送到 sox play 命令:

arecord -D plughw:1,0 -f dat -r 44100| play -t raw -b 16 -e signed -c 2 -v 7 -r 44100 - test.wav (test.wav 只是一些随机的 wav 文件 ID,没有它就无法工作,并且 - 后面 44100 和 test.wav 之间有一个空格,因为我认为 - 是一个单独的参数:

SPECIAL FILENAMES (infile, outfile): - Pipe/redirect input/output (stdin/stdout); may need -t -d, --default-device Use the default audio device (where available))

我发现通过使用 -v 参数可以增加音量。 这会将录制的流播放到我连接到树莓派 3 的扬声器。

最终目标: 将音量增加的声音流通过管道传输到标准输出(或一些 fifopipe 文件),这样我就可以从另一个脚本中的标准输入将其发送到我的手机。

但是我很困惑播放命令的手册页http://sox.sourceforge.net/sox.html

我需要选择输出设备来管道或粗壮或其他东西
如果你知道一个更好的方法来增加我认为Recording WAVE 'stdin' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereosoundstream 的音量,请告诉我

【问题讨论】:

  • 这可能属于 dsp.stackexchange.com,如果没有人可以帮助我,我会把它贴在那里

标签: linux audio stream pipe sox


【解决方案1】:

据我所知,您无法通过管道输出来自play 的输出,您必须为此使用常规的sox 命令。 例如:

# example sound file
sox -n -r 48k -b 16 test16.wav synth 2 sine 200 gain -9 fade t 0 0 0.1

# redundant piping
sox test16.wav -t wav - | sox -t wav - gain 8 -t wav - | play -

对于您问题中的命令,将play 更改为sox 并添加-t wav 就足以让sox 知道您想要以什么格式传输声音。

arecord -D plughw:1,0 -f dat -r 44100 | \
sox -t raw -b 16 -e signed -c 2 -v 7 -r 44100 - -t wav -

【讨论】:

    猜你喜欢
    • 2021-04-29
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    相关资源
    最近更新 更多