基于Orangpi Zero和Linux ALSA实现WIFI无线音箱(二)
作品已经完成,先上源码: https://files.cnblogs.com/files/qzrzq1/WIFISpeaker.zip 全文包含三篇,这是第二篇,主要讲述发送端程序的原理和过程。 第一篇: 基于Orangpi Zero和Linux ALSA实现WIFI无线音箱(一) 第三篇: 基于Orangpi Zero和Linux ALSA实现WIFI无线音箱(三) 以下是正文: 发送端程序基于MFC的对话框类实现,开发环境Visual Studio 2012,主要实现了5个功能,下面逐个讲述: 1、软件启动检查互斥体,防止程序重复启动。 2、读取上一次启动的配置文件,初始化socket、获取本机ip地址。 3、读取用户输入的接收端IP地址,利用Core Audio APIs初始化loopback(环回录音)模式,启动录音子线程。 4、在子线程不断读取音频缓冲区数据,每0.1s将录制的数据打包以PCM格式,通过socket发送到接收端。 5、最小化到系统托盘 一、检查互斥体 创建互斥体是防止应用程序重复启动最常用的方式,本作品使用Core Audio APIs读取声卡音频数据,只能实例化一次。这是因为,这个作品完成后,作者在使用的过程中,发送端软件在运行一段时间后,总是不定期莫名其妙地出现“appcrash”错误,然后程序莫名崩溃