【音视频 ffmpeg 学习】麦克风数据采集,命令行播放 持续更新

ffmpeg 命令
windows 环境
查看设备

ffmpeg -list_devices true -f dshow -i dummy  

【音视频 ffmpeg 学习】麦克风数据采集,命令行播放 持续更新_第1张图片
采集麦克风代码

	//1. init
	avdevice_register_all();
    //avformat_network_init();
    //2.获取windows采集数据所支持的格式(dshow)
    const AVInputFormat *fmt = av_find_input_format("dshow");
    int ret = 0;

    AVPacket pkt;
    //3.定义录制音屏格式上下文。
    AVFormatContext *ctx = nullptr;
    //内装麦克风 (Conexant SmartAudio HD)
    // 麦克风 (Realtek(R) Audio)
    //const char *audio_device = "audio=内装麦克风 (Conexant SmartAudio HD)";

    const char *audio_device = "audio=麦克风 (Realtek(R) Audio)";
    ret = avformat_open_input(&ctx, audio_device, fmt, nullptr);
    if(ret != 0)
    {
        qDebug() << ret << "打开设备失败";
        return;
    }
    // 4.定义一个文件用来保存所采集的音频设备
    QFile file("./test.pcm");
    file.open(QIODevice::WriteOnly);
    if(!file.isOpen()){
        qDebug() << "file open fialed";
        avformat_close_input(&ctx);
        return;
    }
    //5.采集音频数据 ffplay -ar 4100 -ac 2 -f s16le test.pcm
    while( !status_flag && !av_read_frame(ctx, &pkt)){
         file.write((const char*)pkt.data, pkt.size);
    }
    //6.释放资源
    avformat_close_input(&ctx);
    file.close();

使用命名播放

ffplay -ar 4100 -ac 2 -f s16le test.pcm

你可能感兴趣的:(音视频,ffmpeg,学习)