使用Windows API将波形音频转储到stdout
Dumping wave audio to stdout using Windows API
我一直在做一个非常有趣的项目,我想在PCM 44100 Hz 16位的窗口上从立体声混音中捕获音频,并通过netcat(使用cygwin)将其打包。
这个项目的目标是能够将windows输出音频连接到局域网上某个地方的pulseudio服务器。
到目前为止,我已经能够将音频转储到.wav文件中,并将该文件定位并管道传输到netcat,从而成功地将其传输到pulseudio服务器。
这很好,但我想使用从客户端到netcat的直接管道来运行它,所以音频必须发送到stdout。
问题是,我无法让windows将音频写入stdout,到目前为止,我一直在使用mmioOpen函数:
//Original instruction, where filename is a LPWSTR with the file name
//outputFile=mmioOpen(filename,&MMinfo,MMIO_WRITE | MMIO_CREATE);
//New instruction, quite dirty
HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
outputFile=(HMMIO)out;
//Rest of the function
不起作用,我一直在阅读文档,还试图设置一个MMOINFO结构来指向stdout HANDLE等等,但没有成功。
我在文档中找不到任何关于是否可以通过mmioOpen使用stdout作为输出HANDLE的信息。
我曾想过使用一个中间文件作为缓冲区,并将其放在一个单独的线程中的stdout中,但我认为这对延迟没有好处,也不是解决这个问题的正确方法。
有人知道是否有其他方法可以捕获音频并将其直接写入stdout吗?
mmioOpen返回的句柄不是"输出句柄"。它只适用于传递给其他mmio函数。
但是你为什么要使用mmioOpen?它用于读取WAV文件。要获得实时音频数据,请使用waveInOpen和相关的waveIn。。。功能。
相关文章:
- 分段故障(堆芯转储)矢量
- Cppcheck生成xml转储文件
- 如何找出GDB的SIGTRAP核心转储的根本原因
- C++映射分割错误(核心转储)
- 在c++中初始化矩阵时出现分段错误(核心转储)
- 在c++中键入向量中的所有值后,得到分段错误(核心转储)
- 浮点异常(核心转储)#694457
- 分段错误(核心转储)但无法弄清楚
- 链接到libkcapi时没有核心转储
- 检测到堆栈粉碎:已终止 中止(核心已转储)
- 正在处理故障(堆芯转储)
- 分段错误(核心转储) - 使用 SavedModel 的 Tensorflow C++ API 进行推断
- 我不知道为什么这段代码会让核心被转储?
- C++运行时错误与快速排序算法抛出堆栈转储错误
- 在基数排序中,我得到 munmap_chunk():无效指针和中止(核心转储).为什么?
- C++指针无法在函数外部传递值和分段错误(核心转储)错误
- cygwin_exception::open_stackdumpfile:将堆栈跟踪转储到 class4.exe.sta
- C++快速将 int 数组内容转储到文本文件中
- fprintf stdout 没有 100% 准确转储数据
- 使用Windows API将波形音频转储到stdout