• 大小: 7KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: 其他
  • 标签: QT5  录音机  

资源简介

一个简单的QT录音机,QT5.6版本编译的,能够实现录音,保存,播放,展示麦克风的音量大小,设置麦克风的音量大小,实时播放

资源截图

代码片段和文件信息

#include “AudioRecorder.h“
#include 
#include 
#include 
#include 
#include 

#define BufferSize 14096

struct HEADER
{
    char RIFFNAME[4];
    unsigned long nRIFFLength;
    char WAVNAME[4];
    char FMTNAME[4];
    unsigned long nFMTLength;
    unsigned short nAudioFormat;
    unsigned short nChannleNumber;
    unsigned long nSampleRate;
    unsigned long nBytesPerSecond;
    unsigned short nBytesPerSample;
    unsigned short    nBitsPerSample;
    char    DATANAME[4];
    unsigned long   nDataLength;
};

AudioRecorder::AudioRecorder(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);

    miMaxValue = 0;
    miVolume = ui.horizontalSlider->value();
    mpOutputFile = NULL;
    mpAudioInputFile = NULL;
    mpAudioOutputFile = NULL;

    mpAudioInputSound = NULL;
    mpAudioOutputSound = NULL;

    mpInputDevSound = NULL;
    mpInputDevSound = NULL;

    ui.btn_stop->setDisabled(true);
    ui.btn_play->setDisabled(true);
    ui.btn_save->setDisabled(true);

    mpOutputFile = new QFile();
    mpOutputFile->setFileName(tr(“record.raw“));

    //mFormatFile.setFrequency(8000);
    //mFormatFile.setChannels(1);
    mFormatFile.setSampleSize(16);
    mFormatFile.setSampleType(QAudioFormat::SignedInt);
    mFormatFile.setByteOrder(QAudioFormat::LittleEndian);
    mFormatFile.setCodec(“audio/pcm“);

    QAudioDeviceInfo info(QAudioDeviceInfo::defaultInputDevice());
    if (!info.isFormatSupported(mFormatFile)) {
        qWarning(“input default mFormatFile not supported try to use nearest“);
        mFormatFile = info.nearestFormat(mFormatFile);
    }

    QAudioDeviceInfo info1(QAudioDeviceInfo::defaultOutputDevice());
    if (!info1.isFormatSupported(mFormatFile)) {
        qWarning() << “output default mFormatFile not supported - trying to use nearest“;
        //           mFormatFile = info.nearestFormat(mFormatSound);
        qWarning() << “output no support input mFormatFile.“;
        return;
    }

    if(mFormatFile.sampleSize() != 16) {
//        qWarning(“audio device doesn‘t support 16 bit support %d bit samples example cannot run“
//                    yle=“white-space:pre“> mFormatFile.sampleSize());

        mpAudioInputFile = 0;
        return;
    }

    mpAudioInputFile = NULL;
    mpAudioOutputFile = NULL;

    connect(ui.btn_start SIGNAL(clicked()) thisSLOT(OnRecordStart()));
    connect(ui.btn_stop SIGNAL(clicked()) thisSLOT(OnRecordStop()));
    connect(ui.btn_play SIGNAL(clicked()) thisSLOT(OnRecordPlay()));
    connect(ui.btn_save SIGNAL(clicked()) thisSLOT(OnRecordSave()));

    InitMonitor();
}

AudioRecorder::~AudioRecorder()
{

}

void AudioRecorder::OnRecordStart()
{
    mpOutputFile->open(QIODevice::WriteOnly | QIODevice::Truncate);

    mpAudioInputFile = new QAudioInput(mFormatFile this);
    mpAudioInputFile->start(mpOutputFile

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       10681  2018-10-24 13:50  lu2\Audiorecorder.cpp
     文件        1264  2018-10-24 13:26  lu2\Audiorecorder.h
     文件        2803  2018-10-24 13:36  lu2\Audiorecorder.ui
     文件         407  2018-10-24 11:53  lu2\lu2.pro
     文件       23441  2018-10-24 11:50  lu2\lu2.pro.user
     文件         189  2018-10-24 11:50  lu2\main.cpp
     目录           0  2018-10-24 13:50  lu2\

评论

共有 条评论