- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对以下代码片段有疑问……
const qint64 bytesReady = m_audioInput->bytesReady();
const qint64 bytesSpace = m_buffer.size() - m_dataLength;
const qint64 bytesToRead = qMin(bytesReady, bytesSpace);
const qint64 bytesRead = m_audioInputIODevice->read(m_buffer.data() + m_dataLength, bytesToRead);
最佳答案
QAudioInput::bytesReady()
之间没有直接关系和 QIODevice
它正在写它的样本。QAudioInput
在内部维护音频系统的 IO 设备(取决于系统),它类似于只读的 QIODevice
.
当您调用 bytesReady
, 它返回可供读取的字节数,类似于 QIODevice::bytesAvailable()
.那些有不是 尚未写入输出 QIODevice
, 所以当你做 m_audioInputIODevice->read
紧随其后,不处理事件,您实际上得到的是之前写入的样本,而不是仍在音频缓冲区中的样本。
这一点,加上 IODevice 的缓冲,解释了为什么这些数字可能不同,而且我看不到将它们同步在一起的方法。
实际上,您应该这样做:
const qint64 bytesRead = m_audioInputIODevice->read(m_buffer.data() + m_dataLength, bytesSpace);
关于qt - QAudioInput::byteReady() 和 QIODevice::read() 给出不同的字节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9664309/
我想从 QIODevice 继承子类,因为我正在创建我的自定义设备(自定义串行端口对象)。 我看到了: writeData(const char *, qint64 ) : qint64 readDa
我需要一个文件的校验和并找到this ,效果很好。现在我想更改此函数以获取指向之前已使用以下行打开的 QIODevice 的指针: if (!file.open(QFile::ReadOnly | Q
软呢帽上的 qt5.7 检查了这个audio-to-chart example并发现 QIODevice::writeData 用于读取麦克风输入。由于它有效并且正在绘制来自麦克风的数据,因此该功能显
我正在使用 qt 5.3。 我有一个很大的东西写入 QIODevice 以供读取。我想要一个代理来获取数据,同时让 QIODevice 中的数据可供其他东西读取。因此,如果我调用 readAll(),
我试图从文件中读取并放入文本编辑中,但它一直说 QIODevice::read:device not open。 .txt 文件与我的 .qrc 和 .cpp 文件位于同一位置。我正在按照网上的分步指
我得到错误: QIODevice::write (QTcpSocket): device not open. After trying , I think problem is passing par
我想使用 QMediaPlayer 制作音频流程序(如电话) , QAudioProbe和 QAudioOutput Qt 5.3.0 MSVC2012 OpenGL 32 位中的类。 这是我的代码:
我正在尝试将所有传出的 POST 数据保存在 QtWebKit 中。 我使用覆盖 来做到这一点QNetworkReply *QNetworkAccessManager::createRequest(O
Qt 5.7 根据文档,QAudioDecoder不支持流媒体。但它接受文件名或 QIODevice 作为源。出现了“好主意”:让我们子类化 QIODevice 来创建流媒体支持。 但我总是收到错误:
我想使用一些标准的QUdpSocket 方法,确切地说是read() 和readAll()。所以,根据QUdpSocket的文档: If you want to use the standard QI
如果我想将数据写入远程端并等待它的响应,我至少需要一个waitForReadyRead。但在调用它之前,我是否需要使用 waitForBytesWritten 手动刷新输出队列,或者 Qt 会自动为我
我正在尝试为实时音频应用程序实现双缓冲区,QAudioInput 要求它是QIODevice 的子类。我发现此方法的文档非常困惑。 首先,文档中的方法签名与 QT 5.9.2 的 header 不匹配
我正在对 QIODevice 类进行子类化,以通过 QAudioInput 和 QAudioOutput 实例编写和读取语音。但是当我用耳机读它时,声音几乎每隔几毫秒就会中断一次。它发出的声音非常糟糕
我尝试在 docker 容器中构建应用程序。 如果我在我的主机上构建这个镜像,一切顺利。如果我将它推送到 git,hub.docker 会在构建日志中显示以下错误: Step 12/22 : RUN
我是 Qt 的新手,我正在学习它的 Getting Started页。我想知道以下语句是什么意思,为什么需要它们? 在打开功能中: if (!file.open(QIODevice::ReadOnly
我正在编写基于 QCoreApplication 的控制台应用程序,我想在用户向标准输入输入内容时获取信号(一次整行或按字符输入,这对我的应用程序并不重要) . QFile 根据文档不发出信号,所以如
我正在尝试在 PySide 中子类化 QFile 以实现自定义读取行为。但是,如下面的简化代码所示,即使子类的 readData 实现只是调用了父类的 readData 函数,返回的数据也是不正确的。
我希望我的 QT 应用程序将某些日志存储在不同的文件中。我一直在使用 qDebug() open(QIODevice::WriteOnly|QIODevice::Append)){ // Th
当我编译我的程序时,我收到错误消息“QIODevice::write: device not open”这个程序在我的旧电脑上运行但由于某种原因它在我的新电脑上不运行。非常感谢任何有关如何修复此错误的
Qt 4.8 documentation包含以下建议: If you want to use the standard QIODevice functions read(), readLine(),
我是一名优秀的程序员,十分优秀!