Audio Example▲
Sélectionnez
/**
**************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Charts module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
***************************************************************************
*/
#include
"widget.h"
#include
"xyseriesiodevice.h"
#include <QtMultimedia/QAudioDeviceInfo>
#include <QtMultimedia/QAudioInput>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QChart>
#include <QtCharts/QValueAxis>
#include <QtWidgets/QVBoxLayout>
QT_CHARTS_USE_NAMESPACE
Widget::
Widget(const
QAudioDeviceInfo &
amp;deviceInfo, QWidget *
parent) :
QWidget(parent),
m_chart(new
QChart),
m_series(new
QLineSeries)
{
QChartView *
chartView =
new
QChartView(m_chart);
chartView-&
gt;setMinimumSize(800
, 600
);
m_chart-&
gt;addSeries(m_series);
QValueAxis *
axisX =
new
QValueAxis;
axisX-&
gt;setRange(0
, XYSeriesIODevice::
sampleCount);
axisX-&
gt;setLabelFormat("%g"
);
axisX-&
gt;setTitleText("Samples"
);
QValueAxis *
axisY =
new
QValueAxis;
axisY-&
gt;setRange(-
1
, 1
);
axisY-&
gt;setTitleText("Audio level"
);
m_chart-&
gt;addAxis(axisX, Qt::
AlignBottom);
m_series-&
gt;attachAxis(axisX);
m_chart-&
gt;addAxis(axisY, Qt::
AlignLeft);
m_series-&
gt;attachAxis(axisY);
m_chart-&
gt;legend()-&
gt;hide();
m_chart-&
gt;setTitle("Data from the microphone ("
+
deviceInfo.deviceName() +
')'
);
QVBoxLayout *
mainLayout =
new
QVBoxLayout(this
);
mainLayout-&
gt;addWidget(chartView);
QAudioFormat formatAudio;
formatAudio.setSampleRate(8000
);
formatAudio.setChannelCount(1
);
formatAudio.setSampleSize(8
);
formatAudio.setCodec("audio/pcm"
);
formatAudio.setByteOrder(QAudioFormat::
LittleEndian);
formatAudio.setSampleType(QAudioFormat::
UnSignedInt);
m_audioInput =
new
QAudioInput(deviceInfo, formatAudio, this
);
m_device =
new
XYSeriesIODevice(m_series, this
);
m_device-&
gt;open(QIODevice::
WriteOnly);
m_audioInput-&
gt;start(m_device);
}
Widget::
~
Widget()
{
m_audioInput-&
gt;stop();
m_device-&
gt;close();
}