mac环境下录音失败
wickey-w opened this issue · 0 comments
版本
macOS Big Sur 11.5.1
ffmpeg:5.0
qt: 6.2.3
在08_record_audio课堂代码下运行,out.pcm文件大小是0字节
void MainWindow::on_audioButton_clicked() {
qDebug() << "开始录音" << QThread::currentThread();
// 获取输入格式对象
const AVInputFormat *fmt = av_find_input_format(FMT_NAME);
if (!fmt) {
qDebug() << "获取输入格式对象失败" << FMT_NAME;
return;
}
// 格式上下文(将来可以利用上下文操作设备)
AVFormatContext *ctx = nullptr;
// 打开设备
int ret = avformat_open_input(&ctx, DEVICE_NAME, fmt, nullptr);
if (ret < 0) {
char errbuf[1024];
av_strerror(ret, errbuf, sizeof (errbuf));
qDebug() << "打开设备失败" << errbuf;
return;
}
// 文件名
QFile file(FILENAME);
// 打开文件
// WriteOnly:只写模式。如果文件不存在,就创建文件;如果文件存在,就会清空文件内容
if (!file.open(QFile::WriteOnly)) {
qDebug() << "文件打开失败" << FILENAME;
// 关闭设备
avformat_close_input(&ctx);
return;
}
// 采集的次数
int count = 50;
// 数据包
AVPacket pkt;
// 不断采集数据
while (count-- > 0 && av_read_frame(ctx, &pkt) == 0) {
// 将数据写入文件
file.write((const char *) pkt.data, pkt.size);
}
// 释放资源
// 关闭文件
file.close();
// 关闭设备
avformat_close_input(&ctx);
qDebug() << "结束录音" << QThread::currentThread();
}
在debug模式运行下,应用程序输出如下
2022-03-19 19:56:58.461667+0800 08_record_audio[65945:4796567] 开始录音 QThread(0x10962a2e0)
2022-03-19 19:56:58.513056+0800 08_record_audio[65945:4796567] [plugin] AddInstanceForFactory: No factory registered for id <CFUUID 0x11a5674f0> 30010C1C-93BF-11D8-8B5B-000A95AF9C6A
2022-03-19 19:56:58.577507+0800 08_record_audio[65945:4796567] [plugin] AddInstanceForFactory: No factory registered for id <CFUUID 0x11a5674f0> 30010C1C-93BF-11D8-8B5B-000A95AF9C6A
2022-03-19 19:56:58.583072+0800 08_record_audio[65945:4796567] [plugin] AddInstanceForFactory: No factory registered for id <CFUUID 0x11a56b870> F8BB1C28-BAE8-11D6-9C31-00039315CD46
2022-03-19 19:56:59.812602+0800 08_record_audio[65945:4796567] 结束录音 QThread(0x10962a2e0)