Qt读取wav文件处理音频数据时的格式转换问题
2020-02-17 03:16
591 查看
在读取文件时用Qfile file.read先读取表头信息再读取音频数据
表头信息读取参考了https://www.geek-share.com/detail/2687192582.html
数据滤波处理时使用计算出滤波参数后,在线性卷积时发现总会卡死到双重for循环中(下面是已经修改后的)
[code] for( int i=0; i<nSampleCnt; i++) { for( int j=0; j<nFilterLen; ++j ) { res[i+j] += (short)(pFilterData[j]*(double)wavData[i]); } }
后来发现读取文件时使用的是QByteArray,给类型读取时每一位是char型,而数据处理时是short型,所以需要进行一下转换
读取时的转换:
[code]short* wavData; QByteArray gbry; gbry=fileInfo.readAll(); char low; char high; for(int i=0;i<WavFileHeader.nDataLength;i+=2){ high=gbry.at(i+1); low=gbry.at(i); wavData[i/2]=(high<<4)|low; }
写入时的转换
[code]QByteArray byArr; char low; char high; for(int i=0;i<WavFileHeader.nDataLength;i+=2){ low=wavData[i/2]%16; high=wavData[i/2]/16; byArr[i]=low; byArr[i+1]=high; } file.write(byArr);
在转换时要注意high与low的顺序
疑问:使用以上方式将刚读取的wavData直接再重新写入后文件会有很大的噪声,是因为什么?感觉数据传输中没有丢失吧,
希望有大佬可以告知一下原因!
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Qt sqlite多条件查询插入QTableWidget表格(记录备份以防忘记,新手!)
- 搭建pyqt5环境
- pyqt深入学习
- windows环境下Qt连接MySql
- QT4.8.7安装详细教程(MinGW 4.8.2和QTCreator4.2.0)
- ubuntu 环境 cross compile 交叉编译 ARM Qt 集成 opencv
- $fhqTreap$
- QT 日志系统的使用
- 转qt 中的timer
- PyQt学习笔记_利用ScrollBar控制图片位置(实现滑动效果)
- 使用Qt调试程序的操作方式
- QT——程序调试
- X210QT移植
- QT定时器报错
- QTableWidget 应用总结
- Qt中字符串之间的转换
- Qt5.7 + OpenCV3.2开启多线程调用系统摄像头并实现视频录制与回放、图片截取与保存(一)本地图片的读取与显示
- Qt5.7 + OpenCV3.2开启多线程调用系统摄像头并实现视频录制与回放、图片截取与保存(二)摄像头画面显示与视频保存
- Qt qml调试,qml性能分析和优化工具
- PyQt中信号的应用(我用于动态同步修改QTableWidget和QLineEdit)