c++ mac 上使用 Q5.9 采集音频数据,然后采集到的是一堆杂音,不知道是什么情况

2017-11-09 12:56:39 +08:00
 moxiaowei
#include <iostream>

#include "QtCore/QCoreApplication"

#include "QtMultimedia/QAudioInput"

extern "C"{

#include "libswresample/swresample.h"

#include "libavutil/channel_layout.h"//libavutil/channel_layout.h

#include "libswscale/swscale.h"

#include "libavcodec/avcodec.h"

#include "libavutil/frame.h"

#include "libavformat/avformat.h"

}

#include <iostream>

#include <fstream>

using namespace std;

int main(int argc, const char * argv[]) {

QAudioFormat fmt;

fmt.setSampleRate(44100);

fmt.setChannelCount(2);

fmt.setSampleSize(16);

fmt.setSampleType(QAudioFormat::UnSignedInt);

fmt.setCodec("audio/pcm");

fmt.setByteOrder(QAudioFormat::LittleEndian);

QAudioDeviceInfo device = QAudioDeviceInfo::defaultInputDevice();

if(!device.isFormatSupported(fmt)){

std::cout << "设备不支持该类型的音频格式" << std:: endl;

return -1;

}

QAudioInput *input = new QAudioInput(fmt);

QIODevice *io = input->start();


char *buf = new char[4096];

while(true){

if(input->bytesReady() < 4096) continue;

int size = 0;

while(size != 4096){

int len = io->read(buf+size, 4096-size);

if(len <0)break;

size += len;

}

if(size != 4096) continue;


std::fstream fsw("/Users/tangwei/Desktop/test.txt", std::ios::in | std::ios::out | std::ios::ate);//把原始数据写入到文件,判断原数据是否有问题

if(!fsw)
std::cout << "文件打开失败" << std::endl;


fsw << buf << std::endl;


fsw.close();

}


}
代码如上
1924 次点击
所在节点    程序员
1 条回复
snana
2020-07-04 23:20:20 +08:00
解决了吗楼主,我 win 也是这样.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/404903

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX