Linux 音频 API 指南
天不可测
由于历史的原因,在 Linux
环境下有多种API系统可用于声音编程。但没有合适的指引就难以找到合乎自己需要的体系。这里是一个指引,是由Lennart
Poettering <mzoybt (at) 0pointer (dot) net>所写(参见:Homepage of Lennart
),
目的就是带你走出这个密林。
最简单的指引莫过于问自己:“我想(用 Linux Sound
API)做些什么?”。下面就是答案:
我想写一个类似于媒体播放器的软件!
那就用 GStreamer。除非你只想基于KDE来编程,那么,你可以选择使用Phonon。
我想在自己的应用程序中加入事件声音!
使用 libcanberra,并根据XDG
Sound Theming/Naming 规范安装声音文件。如果你只基于KDE,则可以使用KNotify,但它的着重点有所不同。
我想做专业的音频编程,包括硬盘录音、音乐合成、MIDI界面等!
使用 JACK 或者完整的ALSA 界面。
我想基础的PCM音频播放和捕捉!
使用 safe
ALSA 子集。
我想在游戏中加入声音!
如果是全屏幕的大型游戏,使用SDL的声音API。如果是简单的游戏,只用到基础的用户界面例如Gtk+的,使用 libcanberra
我想写一个混音器/音量控制软件!
这要根据你想在哪一个层次提供直接的支持:如果你想支持增强的桌面软件混音器,使用 PulseAudio 音量控制
API。如果你想支持硬件混音器,使用ALSA混音器API。
我想写一个支持
plumbing layer的软件!
使用 完整的 ALSA体系。
我想写一个嵌入式的音频软件!
从技术使用性角度而言safe ALSA子集是一个好的选择,但基于你实际的情况也可以使用其它API。
你想了解更多关于这些API的不同之处吗?
GStreamer
GStreamer
是一个Linux桌面媒体流系统的事实标准。它支持音视频流的编解码。可以基于该API实现从简单的音频文件播放到网络流媒体配置等大范围的应用。
GStreamer支持多种编解码器和音频后端。GStreamer显然不适用于基本的PCM音频播放或者低延时/实时应用场合。GStreamer是可
移植的,并不限于仅能在Linux上使用。它支持的音频后端包括ALSA、OSS、PulseAudio等。
[API
Reference]
libcanberra
libcanberra
是一个抽象的事件声音API。它是XDG
声音主题和命名规范
的实现。虽然libcanberra是GNOME的一部分,但它并不依赖于GNOME/Gtk/GLib
,因此可以用于其它桌
面环境。它除了提供简单的界面用于播放声音文件之外,还提供了缓冲机制(适用于基于网络的瘦客户机)和允许传递多种元数
相关文档:
关于Windows启动过程介绍的文章可谓多如牛毛,而对于Linux的介绍却是凤毛麟角。凡是曾经使用过Linux的用户可能都会注意到,当计算机启动时,屏幕上会出现很多信息。一般情况下,这些信息我们可以通过以下的命令看到:
cat /var/log/dmesg | more
这些信息究竟有什么含义?这个问题看起 ......
env setup
linux(ubuntu)下ruby开发环境搭建,包括一些常见问题解决
注意,本文只是我在搭建ruby学习环境时的一些笔记,因为是用gedit编辑的,所以格式化不是很好,另外,只是备忘而已。
2010.1.19
1. install ruby
$ tar xzf ruby-1.8.7-p248.tar.gz
$ mv ruby-1.8.7-p248 ruby187
$ cd ruby187/
$ ./configure
......
最近在kernel 里面 coding, 找来一些资料 顺手贴来,方便查找。(感谢原作者的努力,若有版权问题,请联系)
有时候需要在Linux kernel--大多是在需要调试的驱动程序--中读写文件数据。在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有: filp_open() fi ......
作者:范一航,华清远见深圳高级讲师
FLASH驱动在嵌入式系统中有着举足轻重的位置,而目前市场上NAND FLASH的价格又要便宜与NOR FLASH,随着越来越多的平台支持从NAND FLASH中启动,掌握NAND flash的驱动编写有着重要的现实意义,由于内核已经完成了大部分的工作,实际工作中大部分工程师对NAND FLASH驱动只是简单的修改, ......