QT 实现录音功能(注意事项)

百度能找到很多的案例,把录制音频出来,但是会出现几个问题

 (1)、如何读取

 (2)、录制的声音不对

 (3)、录制的声音有很大的杂音

现在我们来解决这个问题:

 1、如何读取,大家不用写代码那么麻烦给大家分享一个工具cooleditprolvse

   https://pan.baidu.com/s/1uDABRO9lVIka8pHWMt8p4w

2、如何录制电脑系统的声音,注意不是麦克风


3、录制的声音有很大的杂音

代码中的设置需要匹配当前 录音设备的配置(开发中替换成自动获取)

    format.setSampleRate(48000);
    format.setChannelCount(2);
    format.setSampleSize(16);
   //这个需要完全匹配 ,不然读取不出来,或者杂音很大



附加源代码一份:


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

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    init();
    //read();
}

void MainWindow::init()
{
    outputFile.setFileName("test.raw");
    outputFile.open( QIODevice::WriteOnly | QIODevice::Truncate );
    QAudioFormat format;

    format.setSampleRate(48000);
    format.setChannelCount(2);
    format.setSampleSize(16);
    format.setCodec("audio/pcm");
    format.setByteOrder(QAudioFormat::LittleEndian);
    format.setSampleType(QAudioFormat::UnSignedInt);
    QAudioDeviceInfo info = QAudioDeviceInfo::defaultInputDevice();
    if (!info.isFormatSupported(format))
    {
       qWarning()<<"default format not supported try to use nearest";
       format = info.nearestFormat(format);
    }
    audio = new QAudioInput(info, format, this);
    QTimer::singleShot(10000, this, SLOT(stopRecording()));
    audio->start(&outputFile);

     qDebug() <<"record begin!";
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::read()
{
    outputFile.setFileName("test.raw");
    outputFile.open(QIODevice::ReadOnly);
    QAudioFormat format;

    format.setSampleRate(48000);
    format.setChannelCount(2);
    format.setSampleSize(16);
    format.setCodec("audio/pcm");
    format.setByteOrder(QAudioFormat::LittleEndian);
    format.setSampleType(QAudioFormat::UnSignedInt);
    QAudioDeviceInfo info(QAudioDeviceInfo::defaultOutputDevice());
    if (!info.isFormatSupported(format))
    {
     qWarning()<<"raw audio format not supported by backend, cannot play audio.";
     return;
    }

    outAudio = new QAudioOutput(format, this);
    connect(outAudio,SIGNAL(stateChanged(QAudio::State)),SLOT(finishedPlaying(QAudio::State)));
    outAudio->start(&outputFile);
    qDebug() <<"play begin!";
}

void MainWindow::stopRecording()
{
    audio->stop();
    outputFile.close();
    delete audio;
    qDebug() <<"record end!";
}

void MainWindow::finishedPlaying(QAudio::State state)
{
    if(state == QAudio::IdleState)
    {
         outAudio->stop();
         outputFile.close();
         delete outAudio;
    }
    qDebug() << "play end!";
}
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QWidget>
#include <QtGui>
#include <QAudioInput>
#include <QAudioOutput>
#include <iostream>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    void init();
    ~MainWindow();
    void read();

private slots:
    void stopRecording();
    void finishedPlaying(QAudio::State state);

private:
    Ui::MainWindow *ui;
    QFile outputFile;   // class member.
    QAudioInput* audio; // class member.
    QAudioOutput *outAudio;
};

#endif // MAINWINDOW_H


cool Edit Pro是一个非常出色的数字音乐编辑器和MP3制作软件。不少人把Cool Edit形容为音频“绘画”程序。你可以用声音来“绘”制:音调、歌曲的一部分、声音、弦乐、颤音、噪音或是调整静音。而且它还提供有多种特效为你的作品增色:放大、降低噪音、压缩、扩展、回声、失真、延迟等。你可以同时处理多个文件,轻松地在几个文件中进行剪切、粘贴、合并、重叠声音操作。使用它可以生成的声音有:噪音、低音、静音、电话信号等。该软件还包含有CD播放器。其他功能包括:支持可选的插件;崩溃恢复;支持多文件;自动静音检测和删除;自动节拍查找;录制等。另外,它还可以在AIF、AU、MP3、Raw PCM、SAM、VOC、VOX、WAV等文件格式之间进行转换,并且能够保存为RealAudio格式. 软件的安装: 1、安装Cool edit 2.1 先安装2.0英文版——破解2.0——汉化 2、安装效果器插件 windows都是靠DirectX加强多媒体性能的,所以我们只能安装DirectX效果器。效果器不一定要安装在COOL EDIT的插件目录,任意安装在硬盘自建的“效果器”的文件夹里即可,Cool edit 会自动寻找到安装的插件。 3、让Cool edit搜索检测安装的效果器 打开Cool edit2.1,单击“单轨模式” 使用说明: 1.运行cep_v2.0 setup.exe安装Cool Edit Pro v2.0! 2.运行cep2reg.exe程序注册,输入: key码: Name:ROR Code:200-00-3Z1XFL9C Name:mydaj Code:200-00-NKLYUBNZ 3.运行cep_v2.1 setup.exe程序安装Cool Edit Pro v2.1!
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值