关于mediastreamer和pulseaudio的那点破事

这些天的一些开发涉及到mediastreamer等几个开源包,之前一直是用跑在虚拟机上的redhat。无奈问题多多,测试程序音质很差,两台机之间的音频通信更是无法忍耐,延时很严重,还老是有杂音,一说快就完全听不清楚了。心想可能是系统跑在虚拟机上的关系吧,记得程序总会爆出警告。加上也想换到ubuntu10.04过下瘾,就直接安装上了。

满怀期待地换上了,把几个包都编译好。试了下用ring_start来播放*.wav文件,倒也没有延时了。再试下开源包自带的echo这个例子,无奈问题来了,貌似采集不到声卡的数据,没有音频输出。看了一下程序的输出报告,只有OSS,却没有ALSA。怪了啊,UBUNTU默认应该只有ALSA的啊,怎么会只有OSS的呢?

不管那么多了,升级下声卡驱动吧,看看问题能不能解决!折腾了半天把驱动更新完,并用gnome-alsamixer做了一些改动,好,以失败告终,除了杂音大点外无任何副作用!

最后跑到群上问,有一大牛才相告程序找到的oss是pulse-oss-plugin,而且所有音频输出由pulseaudio接管,但底层还是基于alsa的。以为是mediastreamer2这个开源包不支持pulseaudio,可是搜了下人家明明白白写着是支持的。阅读了一下关于这点的源代码,也确实有提供了pulseaudio的支持。既然这样的话应该还有pulseaudio的才对啊,怎么会只有OSS呢?再次试着configure整个开源包,突然看到了一句,“checking for LIBPULSE... no”!一切问题出来了,少了个pulse的静态开发库。上新立德搜了个,安装后,运行echo时手动指定声卡为pulseaudio。出声了,折腾了一天的问题竟然就出在这个小点上。可能是mediastreamer2依赖于这个库的一些调用,当缺少这个库时,开发包预编译时就会认定没有pulseaudio而直接把相关源码略过。

标签: ,
文章分类 Programming

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*