gpt4 book ai didi

c++ - 为什么QAudioRecorder无法通过构造函数录制?

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

header

#ifndef AUDIORECORD_H
#define AUDIORECORD_H

#include <QMediaRecorder>
#include <QAudioRecorder>
#include <QUrl>

class AudioRecorder : public QAudioRecorder
{
Q_OBJECT

public:
AudioRecorder(QObject * parent);
~AudioRecorder(){}

};

#endif // AUDIORECORD_H
来源
#include "audiorecord.h"
#include<iostream>
using namespace std;
AudioRecorder::AudioRecorder(QObject * parent = 0)
{
this->setOutputLocation(QUrl::fromLocalFile("test.mp3"));

int x = 0;
while ( x > 10000)
{
this->record();
x++;
}

this->stop();

std::cout<<"\ndsffsdf\n";
}
main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include "audiorecord.h"
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);

QObject p;
AudioRecorder obj(&p);

QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;

return app.exec();
}
这不会产生任何错误,但也不会记录。我不希望有任何质量或完整的录音。
我只想看看这个录音机是如何工作的。
该test.mp3没有保存。
我可以在其上加上或减去什么最低限度以使其记录并保存?

最佳答案

原因
如果我告诉你1万次,那会是什么:去牢牢握住手去买些牛奶,然后在我让你去说:啊,算了吗?你能买牛奶吗?
您正在对代码执行相同的操作:

int x = 0;
while ( x > 10000)
{
this->record();
x++;
}

this->stop();
您正在调用10 000次 QAudioRecorder::record,但是您不让Qt进入事件循环并实际执行命令。然后在Qt进入事件循环之前,您说: stop

首先,您不需要子类 QAudioRecorder,因为您无需为其添加任何新功能。只需创建该类的实例并使用它即可。
其次, recordstop是插槽。将它们连接到GUI中相应按钮的 clicked信号,例如:
auto *audioRecorder = new QAudioRecorder(this);

...

connect(btnRecord, &QPushButton::clicked, audioRecorder, &QAudioRecorder::record);
connect(btnStop, &QPushButton::clicked, audioRecorder, &QAudioRecorder::stop);
注意:有关更多信息,请查看 documentation中的示例。

关于c++ - 为什么QAudioRecorder无法通过构造函数录制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64696036/

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