gpt4 book ai didi

c++ - RtAudio + Qt : duplex not working with RME Fireface on Linux

转载 作者:行者123 更新时间:2023-12-03 01:36:01 25 4
gpt4 key购买 nike

这是我在 Stackoverflow 上的第一篇文章,希望我做对了。

我是 C++ 新手。

我一直在玩 RtAudio 和 Qt(在 linux、桌面和树莓派上)。

后端是 ALSA。

我的台式计算机上的音频输出都很好(ClassCompilant 模式下的 RME Fireface UCX 和带有 HifiBerry 和 PiSound 的 Raspberry Pi 3)

最近,我尝试在我的程序中添加音频输入支持。
我读了duplex tutorial在 RtAudio 网站上,并尝试在我的代码中实现它。

一旦我添加了输入 StreamParametersopenStream我听到了非常沙哑的声音。
虽然,StreamStatus 在回调中是可以的......

我尝试创建一个空的 C++ 项目,并简单地复制 RtAudio 教程。
可悲的是,问题仍然存在......

我将此添加到我在 Qt Creator 中的项目文件中
LIBS += -lpthread -lasound
我认为我的问题类似于 this one ,但我找不到它是如何(或是否)解决的

我尝试了不同的缓冲区大小(从 64 到 4096 甚至更多),裂缝不太听得见,但当缓冲区大小增加时仍然存在

你知道关于双工模式下的 RtAudio 应该做些什么来解决这个问题吗?在双工模式下,缓冲区大小似乎不一样。

编辑:

出于好奇(和绝望),我使用 RtAudio 帮助中的规范示例尝试了更低的缓冲区大小:事实证明,使用缓冲区大小 1、2、4 和 8 帧可以消除裂缝...

我一使用16帧,声音就很糟糕

15帧也行,我真的不明白是怎么回事

代码示例:

RtAudio::StreamOptions options;
options.flags |= RTAUDIO_SCHEDULE_REALTIME;

RtAudio::StreamParameters params_in, params_out;
params_in.deviceId = 3;
params_in.nChannels = 2;
params_out.deviceId = 3;
params_out.nChannels = 2;

仅输出时,它可以工作:
try {
audio.openStream(
&params_out,
NULL,
RTAUDIO_SINT16,
48000,
&buffer_frames,
&inout,
(void *) &buffer_bytes,
&options
);
}
catch (RtAudioError& e) {
std::cout << "Error while opening stream" << std::endl;
e.printMessage();
exit(0);
}

更换时出现裂缝 NULL&params_in :
try {
audio.openStream(
&params_out,
&params_in,
RTAUDIO_SINT16,
48000,
&buffer_frames,
&inout,
(void *) &buffer_bytes,
&options
);
}
catch (RtAudioError& e) {
std::cout << "Error while opening stream" << std::endl;
e.printMessage();
exit(0);
}

感谢您的帮助

最佳答案

回答我自己的问题。

我在 Raspberry Pi 3/PiSound 上重新进行了测试。

事实证明我第一次肯定做错了什么。来自 RtAudio 的规范示例(以及我为我的程序所做的输入实现)在 64、128 等缓冲区大小下运行良好。

桌面版本仍然有刺耳的声音,但可以使用奇怪的缓冲区大小(如 25、30 或 27)。问题很可能来自 Fireface UCX,它在 Linux 上没有得到很好的支持(即使在 ClassCompilant 模式下)。

谢谢你的帮助,如果我浪费了你的时间,我很抱歉。

关于c++ - RtAudio + Qt : duplex not working with RME Fireface on Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53189676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com