QT---高品质录放音

    • 高品质录放音参数讲解
    • 录音的采样等级设置
    • 源代码

1. 高品质录放音参数讲解

  下面的实现方式可以调节录音品质。分为0 、1 、2、3、4个等级:
品质值(ConstantValue):

QMultimedia::VeryLowQuality0
QMultimedia::LowQuality1
QMultimedia::NormalQuality2
QMultimedia::HighQuality3
QMultimedia::VeryHighQuality4

settings.setQuality(QMultimedia::EncodingQuality(QMultimedia::HighQuality));里面进行品质值设置。

2. 录音的采样等级设置

  录音的采样等级设置也是会影响录音的效果的。下面的表格列出了设置参数值:

Constant Value Description
QMultimedia::ConstantQualityEncoding 0 Encoding will aim to have a constant quality,adjusting bit rate to fit.
QMultimedia::ConstantBitRateEncoding 1 Encoding will use a constant bit rate,adjust quality to fit.
QMultimedia::AverageBitRateEncoding 2 Encoding will try to keep anaverage bit rate setting,but will use more or less as needed.
QMultimedia::TwoPassEncoding 3 The media will first be processed to determine the characteristics,and then processed a second time allocating more bits to the areas that need it.

  settings.setEncodingMode(QMultimedia::ConstantQualityEncoding);函数来设置相关参数。

3. 源代码

在.pro文件中

QT+=coreguimultimedia widgets
greaterThan(QT_MAJOR_VERSION,4):QT+=widgets

mainwindow.h

#ifndefMAINWINDOW_H
#defineMAINWINDOW_H

#include<QtGui>
#include<QAudioRecorder>
#include<QAudioEncoderSettings>
#include<QMainWindow>
#include<QSound>

namespaceUi{
classMainWindow;
}

classMainWindow:publicQMainWindow
{
Q_OBJECT
public:
explicitMainWindow(QWidget*parent=0);
~MainWindow();
privateslots:
voidon_record_clicked();

voidon_stop_clicked();

voidon_pause_clicked();

voidon_play_clicked();

private:
Ui::MainWindow*ui;

QAudioRecorder*audioRecorder;
};

#endif//MAINWINDOW_H

mainwindow.cpp

#include"mainwindow.h"
#include"ui_mainwindow.h"
#include<QDebug>

MainWindow::MainWindow(QWidget*parent):
QMainWindow(parent),
ui(newUi::MainWindow)
{
ui->setupUi(this);
ui->pause->setDisabled(true);
ui->stop->setDisabled(true);

audioRecorder=newQAudioRecorder(this);
}

MainWindow::~MainWindow()
{
deleteaudioRecorder;
deleteui;
}

voidMainWindow::on_record_clicked()
{
qDebug()<<"[Enteron_record_clicked]";
ui->record->setDisabled(true);
ui->play->setDisabled(true);
ui->pause->setDisabled(false);
ui->stop->setDisabled(false);
//没有设置为默认设置
QStringfileName="E:/qt/2015-2-10/qvoiceintercom/qvoiceintercom/info/test";
audioRecorder->setOutputLocation(QUrl::fromLocalFile(fileName));
audioRecorder->setAudioInput("");
QAudioEncoderSettingssettings;
settings.setCodec("audio/pcm");
settings.setSampleRate(16000);
settings.setBitRate(0);
settings.setChannelCount(1);
settings.setQuality(QMultimedia::EncodingQuality(QMultimedia::HighQuality));
settings.setEncodingMode(QMultimedia::ConstantQualityEncoding);

audioRecorder->setEncodingSettings(settings,QVideoEncoderSettings());
audioRecorder->record();
qDebug()<<"recordbegin!"<<endl;
}

//stop:结束当前这段录音。
voidMainWindow::on_stop_clicked()
{
ui->record->setDisabled(false);
ui->play->setDisabled(false);
if(audioRecorder->state()!=QMediaRecorder::StoppedState){
audioRecorder->stop();
qDebug()<<"recordstop!"<<endl;
}
}

//pause:暂停当前这段录音。
voidMainWindow::on_pause_clicked()
{
ui->play->setDisabled(true);
if(audioRecorder->state()!=QMediaRecorder::PausedState){
audioRecorder->pause();
qDebug()<<"recordpause!";
}
else{
audioRecorder->record();
qDebug()<<"recordbegin...";
}
}

voidMainWindow::on_play_clicked()
{
ui->pause->setDisabled(true);
ui->stop->setDisabled(true);
/*两种不同的方式播放:第一种只会播放第一次录制的录音,第二种会播放当前录制的录音*/
//qDebug()<<"[Enteron_play_clicked]";
//第一种
//QSound*bells=newQSound("E:/qt/2015-2-10/qvoiceintercom/qvoiceintercom/info/test.wav");
//bells->play();
//if(bells->isFinished()){
//bells->stop();

//}
//elseqDebug()<<"..";
//第二种
QSound::play("E:/qt/2015-2-10/qvoiceintercom/qvoiceintercom/info/test.wav");
}

ui
QT---高品质录放音_第1张图片

你可能感兴趣的:(qt,录放音,高品质录放音)