- 浏览: 236293 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
wahahachuang8:
GoEasy 实时推送支持IE6-IE11及大多数主流浏览器的 ...
服务器推送技术 java -
mahuanjian:
[flash=200,200][/flash]
服务器推送技术 java -
wenjundiandian:
下面有网页编辑器的话还是会被隐藏.
ext中消息框、提示框、确认框显示在最前面的解决方法 -
天塔上的猫:
/**
* JAVA常见的权限控制算法的实现
*
* ...
JAVA常见的权限控制算法的实现
Qt录音需要用到#include <QtMultimedia/QAudioInput>
void ***::***()
{
QFile inputFile;
QAudioInput *audioInput;
inputFile.setFileName("a.raw");
inputFile.open(QIODevice::WriteOnly | QIODevice::Truncate);
QAudioFormat format;
format.setSampleRate(8000);
format.setChannels(2);
format.setSampleSize(16);
format.setCodec("audio/pcm");
format.setByteOrder(QAudioFormat::LittleEndian);
format.setSampleType(QAudioFormat::SignedInt);
QAudioDeviceInfo info(QAudioDeviceInfo::defaultInputDevice());
if (!info.isFormatSupported(format))
{
qWarning() << "default format not supported try to use nearest";
format = info.nearestFormat(format);
}
audioInput = new QAudioInput(format, this);
QTimer::singleShot(10000, this, SLOT(stopRecording()));
audioInput->start(&inputFile);
qDebug() << "record begin!";
}
void ***::stopRecording()
{
audioInput->stop();
inputFile.close();
delete audioInput;
qDebug() << "record end!";
}
然后播放的时候,可以把raw文件加个文件头,变成wav文件
typedef struct
{
char fccID[4]; //"RIFF"
unsigned long dwSize;//length-8
char fccType[4]; //"WAVE"
}HEADER;
typedef struct
{
char fccID[4]; //"fmt "
unsigned long dwSize; //16
unsigned short wFormatTag; //1
unsigned short wChannels; //1 or 2
unsigned long dwSamplesPerSec; //44100
unsigned long dwAvgBytesPerSec; //
unsigned short wBlockAlign; //声道数*量化数/8
unsigned short uiBitsPerSample; //量化数 8 or 16
}FMT;
typedef struct
{
char fccID[4]; //"data"
unsigned long dwSize; //length-44
}DATA;
//转换文件为wav
HEADER pcmHEADER;
FMT pcmFMT;
DATA pcmDATA;
unsigned long m_pcmData;
FILE *fp, *fpCopy;
fp = fopen("a.raw", "rb");
fpCopy = fopen("a.wav", "wb+");
if(!fp)
{
qDebug() << "open pcm file error";
return;
}
if(!fpCopy)
{
qDebug() << "create wave file error";
return;
}
qstrcpy(pcmHEADER.fccID, "RIFF");
qstrcpy(pcmHEADER.fccType, "WAVE");
fseek(fpCopy, sizeof(HEADER), 1);
pcmFMT.dwSamplesPerSec = 8000;
pcmFMT.dwAvgBytesPerSec = pcmFMT.dwSamplesPerSec*sizeof(m_pcmData);
pcmFMT.uiBitsPerSample = 16;
qstrcpy(pcmFMT.fccID, "fmt ");
pcmFMT.dwSize = 16;
pcmFMT.wBlockAlign = 4;
pcmFMT.wChannels = 2;
pcmFMT.wFormatTag = 1;
fwrite(&pcmFMT, sizeof(FMT), 1, fpCopy);
qstrcpy(pcmDATA.fccID, "data");
pcmDATA.dwSize = 0;
fseek(fpCopy, sizeof(DATA), 1);
fread(&m_pcmData, sizeof(unsigned long), 1, fp);
while(!feof(fp))
{
pcmDATA.dwSize += 4; //计算数据的长度;每读入一个数据,长度就加一;
fwrite(&m_pcmData, sizeof(unsigned long), 1, fpCopy); //将数据写入.wav文件;
fread(&m_pcmData, sizeof(unsigned long), 1, fp); //从.pcm中读入数据
}
fclose(fp);
pcmHEADER.dwSize = 44+pcmDATA.dwSize-8; //根据pcmDATA.dwsize得出pcmHEADER.dwsize的值
rewind(fpCopy); //将fpCpy变为.wav的头,以便于写入HEADER和DATA;
fwrite(&pcmHEADER, sizeof(HEADER), 1, fpCopy); //写入HEADER
fseek(fpCopy, sizeof(FMT), 1); //跳过FMT,因为FMT已经写入
fwrite(&pcmDATA, sizeof(DATA), 1, fpCopy); //写入DATA;
fclose(fpCopy)
发表评论
-
qtwebkit中js事件的正确写法。
2012-08-15 09:50 971<script language="JavaS ... -
qtwebkit截图
2012-08-13 13:29 800QSize size = m_view->page()- ... -
Qt 中一些常用类的中文说明
2012-02-22 23:39 1072作者:丁冬,华清远见嵌 ... -
输入法
2012-01-04 18:00 0http://civilnet.cn/syszux/syszu ... -
QT启动前有绿屏怎么处理
2012-01-04 09:49 1249笑看人生pual(13290889) 16:32:27QT启动 ... -
QT实现截取屏幕
2012-01-04 09:48 1192本文阐述了一个在Qtopia下截取屏幕的方法,实际上Qtopi ... -
在QT中通过摄像头动态显示图片 .
2012-01-04 09:49 1916Camgui::Camgui(QWidget *parent, ... -
脚本打包大量文件学习
2011-12-19 09:33 773TARGET_DIR=$PWDcd /list=`cat &l ... -
QT 同时支持鼠标和触摸屏
2011-12-17 12:36 1651现在 如果我要使用鼠标导入环境变量export QWS_M ... -
Qt中Qstring,char,int,QByteArray之间到转换
2011-12-17 12:31 1142各种数据类型的相互转换char * 与 const char ... -
QT Creator的style sheet的几种用法(QT Creator)(StyleSheet)(样式)(QT4.7)(用法)
2011-12-10 20:16 1851摘要: QT Create中,对butt ... -
QT学习笔记(QT4.7)(笔记)
2011-12-10 20:16 1884摘要: 由于 ... -
QT 4.7支持中文(QT4.7)(中文)(makeqpf)
2011-12-10 20:16 2030摘要: QT4.7.0在移植到开发板上的 ... -
QImage变暗
2011-12-16 14:50 1078_image = QPixmap::grabWindow ... -
Qt/Embedded动态旋转屏幕
2011-12-10 20:16 1099距离上次发博文已经有 ... -
如何在QT下执行shell或外部程序
2011-12-10 20:17 1987摘要: 通常,我们运行shell程序都是在终端里进行的, ... -
linux嵌入式qt的屏幕旋转与字体大小问题
2011-12-16 14:50 2379【1、与qt程序显示文字大小有关的两项】 export ... -
改变QMessageBox的大小
2011-12-16 14:50 1005创建一个QMessageBox: QMessageBox m ... -
QT坐标变换
2011-12-09 09:18 1039------------------------------ ... -
QT画对话框窗口圆角
2011-12-09 09:16 1544QPainterPath path; QRectF rec ...
相关推荐
整个程序实现了一个录音机功能,QAudioInput生成的raw文件不能直接用播放器播放,这里将生成的.raw文件转成wav格式的音频文件。这样既可用QAudioOutput来播放,又可以用播放器来播放,详情见 ...
在本项目中,开发者利用QT库创建了一个录音播放小工具,该工具不仅能够进行音频录制,还支持将原始(raw)音频数据转换为WAV格式的音频文件。以下是关于这个工具涉及到的主要知识点的详细解释: 1. **QAudioInput**...
本话题将重点讨论如何使用QT实现PCM(脉冲编码调制)与WAV音频文件的相互转换,以及如何读取和写入WAV音频格式。 首先,WAV是一种无损音频文件格式,它保存原始音频数据,包括采样率、位深度和声道数等信息。在QT中...
Qt qt-opensource-windows-x86-5.11.0安装包,适用于开发openCV、QtAndroid
通常,安装或更新Qt Creator的GDB调试器时,会包含可执行文件、库文件、配置文件等一系列组件,它们将被放置到Qt Creator的相应目录下,以便IDE能够识别和使用这个调试器。 综上所述,这个压缩包提供了适用于...
在本文中,我们将深入探讨如何使用Qt框架来实现录音功能,并将录制的音频保存为WAV格式的文件。Qt是一个跨平台的应用程序开发框架,它提供了丰富的API接口,使得开发者可以方便地创建出具备多媒体功能的应用。对于...
这个压缩包包含了用于编译和使用Qt Serial Port的所有必要文件。 首先,让我们深入理解Qt Serial Port的核心功能。它提供了一个全面的API,使得开发者能够轻松地进行串行通信操作,如打开、关闭、设置波特率、数据...
QtJambi将C++的Qt库转换为Java语言,使得Java开发者可以无缝地使用Qt的API,包括窗口系统、图形渲染、网络通信、数据库访问等功能。 这个插件"qtjambi-eclipse-integration-4.5.2_01"是针对QtJambi 4.5.2版本的,...
下载文件:qt-opensource-windows-x86-mingw48_opengl-5.2.1.exe并安装D:\Qt\Qt5.2.1 这个版本一般已经包含工具qt-creator和mingw32-make 若不含有,可以去下载IDE : ----打开网页:...
"qt-everywhere-opensource-src-4.8.7.7z" 是一个包含QT库开源源代码的压缩文件,版本为4.8.7,格式为7z。这个版本可能在发布时是最稳定和广泛使用的,对于学习、研究或者定制QT库的开发者来说非常有价值。 首先,...
《Visual Studio 2017中的Qt插件:qt-vsaddin-msvc2017-2.8.1-rev.06》 在软件开发领域,集成开发环境(IDE)如Microsoft的Visual Studio 2017为程序员提供了丰富的功能和便利。然而,对于使用Qt框架的开发者来说,...
2. **构建脚本**:为了编译源代码,压缩包可能包含Makefile或其他构建系统(如qmake或CMake)的配置文件,这些文件指示如何将源代码转换为可执行程序。 3. **资源文件**:可能包含图标、图片、配置文件等,这些都是...
这将得到`qt-opensource-linux-x64-5.7.1.run`这个可执行文件。 2. **赋予执行权限**:由于Linux的安全性机制,你需要赋予该文件执行权限才能运行。在终端中,使用`chmod`命令: ``` chmod +x qt-opensource-...
qt6在线安装文件:qt-unified-windows-x64-online 向下兼容
【压缩包子文件的文件名称列表】中的 "qt-vsaddin-msvc2015-2.7.2-rev.02.vsix" 是安装文件,这是一种Visual Studio扩展的打包格式。VSIX(Visual Studio Extension)文件可以被Visual Studio识别并安装,将Qt VS ...
"qt-material-widgets-master" 是一个基于Qt框架的用户界面(UI)开发项目,它提供了Material Design风格的控件库。这个库使得Qt开发者能够轻松地在他们的应用中实现Google的Material Design设计规范,从而获得现代...
解压后会得到一个名为"qt-opensource-linux-x64-android-5.3.2.run"的可执行文件。这个文件实际上是一个安装程序,需要通过"chmod 777"命令再次修改其权限,然后在命令行中执行它以启动安装过程。 安装程序启动后,...
http://qt.nokia.com/products/qt-addons/solutions-archive/ 有JPEG2000的,有Windows中Services的,有浏览器插件的,有单应用程序的,有SOAP的,有文件加锁操作的,有属性操作的。 如果你比较节俭资源分,那么也...
文件`qt-vsaddin-msvc2017-2.2.0.vsix`和`qt-vsaddin-msvc2015-2.2.0.vsix`是VS插件的安装文件,它们分别对应于Visual Studio 2017和2015的版本。VSIX是Visual Studio Extension的文件格式,通过双击这些文件,用户...
对于Windows用户,qt-eclipse-integration-win32-1.6.1.exe是一个可执行文件,用于在Windows环境下安装插件。这个.exe文件是一个标准的Windows安装程序,用户只需双击运行,然后按照安装向导的指示完成安装过程。 ...