总是不在 2023-11-18 10:13 采纳率: 100%
浏览 24
已结题

c/c++ 获取linux 的 系统声音

c/c++ 实现录取linux 的 系统声音
实现录取系统内部的声音比如音乐播放器播放的声音,而不是从麦克风来的声音

  • 写回答

6条回答 默认 最新

  • 社区专家-Monster-XH 2023-11-18 12:35
    关注
    
    #include <stdio.h>
    #include <string.h>
    #include <pulse/simple.h>
    #include <pulse/error.h>
    
    #define BUFSIZE 1024
    
    int main(int argc, char *argv[]) {
        // PulseAudio 的一些变量
        pa_simple *s = NULL;
        pa_sample_spec ss;
        int ret = 1;
        int error;
    
        // 设置音频格式
        ss.format = PA_SAMPLE_S16LE;
        ss.rate = 44100;
        ss.channels = 2;
    
        // 创建一个新的播放流
        if (!(s = pa_simple_new(NULL, "RecordApp", PA_STREAM_RECORD, NULL, "record", &ss, NULL, NULL, &error))) {
            fprintf(stderr, __FILE__": pa_simple_new() 失败: %s\n", pa_strerror(error));
            goto finish;
        }
    
        // 循环录音并写入文件
        for (;;) {
            uint8_t buf[BUFSIZE];
            ssize_t r;
    
            // 读取数据
            if (pa_simple_read(s, buf, sizeof(buf), &error) < 0) {
                fprintf(stderr, __FILE__": pa_simple_read() 失败: %s\n", pa_strerror(error));
                goto finish;
            }
    
            // 将数据写入标准输出
            if (write(STDOUT_FILENO, buf, sizeof(buf)) != sizeof(buf)) {
                fprintf(stderr, __FILE__": 写入失败\n");
                goto finish;
            }
        }
    
        ret = 0;
    
    finish:
    
        if (s)
            pa_simple_free(s);
    
        return ret;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 11月26日
  • 已采纳回答 11月18日
  • 赞助了问题酬金20元 11月18日
  • 创建了问题 11月18日

悬赏问题

  • ¥15 from seleniumwire import webdriver 在抓取http://链接的时候会自动转https://这个怎么解决
  • ¥15 hive直连数据库模式插入mysql表数据失败(相关搜索:数据库)
  • ¥30 不会,学习,有偿解答
  • ¥15 SQL查询语句报错(检查)
  • ¥15 此表中公式应该怎么写
  • ¥15 求HI-TECH PICC 9.50 PL3安装包
  • ¥15 下载ctorch报错,求解
  • ¥15 如何入门学习c语言,单片机
  • ¥15 idea 编辑语言的选择
  • ¥15 Windows下部署Asmjit