Command line 朱莉娅:将数据写入::Cmd的标准方法

Command line 朱莉娅:将数据写入::Cmd的标准方法,command-line,io,julia,Command Line,Io,Julia,我正在努力寻找一种简单的方法,从arecord读取数据,然后经过一些处理后,使用Julia将数据发送到aplay。我已经了解了如何使用管道通过以下方式直接发送数据: run(pipeline(`arecord -d 3`, `aplay`)) # Same as: arecord -d 3 | aplay 我还了解了如何获取数据: data = read(`arecord -d 3`) 然而,将数据输出到aplay的简单任务让我不知所措,这让我想到,一般来说,人们将如何获取一些数据d,

我正在努力寻找一种简单的方法,从
arecord
读取数据,然后经过一些处理后,使用Julia将数据发送到
aplay
。我已经了解了如何使用管道通过以下方式直接发送数据:

run(pipeline(`arecord -d 3`, `aplay`))    # Same as: arecord -d 3 | aplay
我还了解了如何获取数据:

data = read(`arecord -d 3`)
然而,将
数据
输出到
aplay
的简单任务让我不知所措,这让我想到,一般来说,人们将如何获取一些数据
d
,并将其放入一些
::Cmd
(或者至少将一些
::Cmd
转换成Julia中的
::IOStream
)变量。此外,1离线流(如上面用于读取音频数据的流)和连续流(只有在被告知关闭后才会停止)之间的区别是什么

提前感谢你的帮助


编辑:
arecord
aplay
是录制和播放音频的标准linux终端命令
arecord-d3
生成一个8位值的简单向量,采样频率为8kHz

说清楚,我在问:

  • ::Cmd
    中的数据作为连续数据流读取到向量中的标准方法是什么(例如,从一个永无止境的文件中读取数据)
  • 将数据向量写入
    ::Cmd
    的标准方法是什么?它可以是一个一次性实例,也可以是一个连续的数据流(例如,一次写入一个文件,然后不断追加它)
  • 这不是特定于文件的,因为写入
    aplay
    ,这是一个标准的
    ::Cmd
    变量,在上面的管道示例中工作,当仅尝试使用
    管道
    写入
    函数向其传递一些数据时,它不起作用(或者至少我没有成功这样做)

在读取和处理
数据之后。试一试

open(`aplay`,"w",STDOUT) do stdin
    write(stdin, data)
end

你能再解释清楚一点吗?这里的
arecord
aplay
是什么?以及作为输入提供的内容以及您缺少的内容。@RahulLakhanpal更新了问题以回答您的问题。谢谢,音频工作正常。我不知道为什么这是一个循环,而不是
stdin=open('aplay','w',STDOUT)
,然后是
write(stdin,data)
(根据需要用backtick替换)。这背后是否有任何理由可以帮助我今后不再感到困惑?@user3303504关于写这篇文章的另一种方法(没有
do
语法),我认为应该可以。但是没有使用aplay进行测试,因为它在我的chrooted Julia环境中不起作用。不幸的是,情况并非如此(这导致了我的很多困惑)。目前,文档在这方面也不是很好,这对=(我发现,当您试图告诉aplay使用什么样的采样频率和数据类型时,它会再次破坏X(并且读取除8位以外的任何类型的数据会使一次读取所有数据变得更加困难(我找不到任何文件大小函数)@user3303504您能否添加您正在使用的特定
arecord
aplay
命令(暂时忘记处理)。