Linux音频编程(三)混音器介绍】的更多相关文章

Linux音频编程指南 虽然目前Linux的优势主要体现在网络服务方面,但事实上同样也有着非常丰富的媒体功能,本文就是以多媒体应用中最基本的声音为对象,介绍如何在Linux平台下开发实际的音频应用程序,同时还给出了一些常用的音频编程框架. 一.数字音频 音频信号是一种连续变化的模拟信号,但计算机只能处理和记录二进制的数字信号,由自然音源得到的音频信号必须经过一定的变换,成为数字音频信号之后,才能送到计算机中作进一步的处理. 数字音频系统通过将声波的波型转换成一系列二进制数据,来实现对原始声音的重…
转自: http://www.ibm.com/developerworks/cn/linux/l-audio/ Linux音频编程指南 虽然目前Linux的优势主要体现在网络服务方面,但事实上同样也有着非常丰富的媒体功能,本文就是以多媒体应用中最基本的声音为对象,介绍如何在Linux平台下开发实际的音频应用程序,同时还给出了一些常用的音频编程框架. 1 评论: 肖文鹏 (xiaowp@263.net), 自由软件爱好者 2004 年 2 月 01 日 内容 一.数字音频 音频信号是一种连续变化的…
1. 背景 在<Jasper语音助理介绍>中, 介绍了Linux音频系统, 本文主要介绍了Linux下音频编程相关内容. 音频编程主要包括播放(Playback)和录制(Record), 大概过程简单总结如下:播放:  将音频文件进行解码(Decode)生成PCM数据, 并将其送入音频设备中播出.录制:  将声音进行采集, 编码(Encode)后按照特定文件格式保存至音频文件. 2. 基础知识 2.1 声音和声卡 声音是由物体振动产生的声波, 是通过介质(空气或固体.液体)传播并能被人或动物听…
(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端        在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序. 比如我们使用ftp程序从另外一        个地方获取文件的时候,是我们的ftp程序主动同外面进行通信(获取文件), 所以这个地方我们的ftp程序就是客户端程序. 服务端        和客户端相…
Linux网络编程(三) wait()还是waitpid() Linux网络编程(二)存在客户端断开连接后,服务器端存在大量僵尸进程.这是由于服务器子进程终止后,发送SIGCHLD信号给父进程,而父进程默认忽略了该信号.为避免僵尸进程的产生,无论我们什么时候创建子进程时,主进程都需要等待子进程返回,以便对子进程进行清理.为此,我们在服务器程序中添加SIGCHLD信号处理函数. 代码如下: #include <stdlib.h> #include <stdio.h> #include…
Linux下的音频编程中有OSS和ALSA,本篇文章将对ALSA进行相关介绍.ALSA提供一系列基于命令行的工具集,比如混音器(mixer),音频文件播放器(aplay),以及控制特定声卡特定属性的工具. 一.ALSA的 API主要分为以下几种接口:(1)控制接口:提供灵活的方式管理注册的声卡和对存在的声卡进行查询.(2)PCM接口:管理数字音频回放(playback)和录音(capture)的接口. (Pulse Code Modulation(脉冲编码调制).这个词描述了一种用数字化形式表示…
一.声卡 1.声卡是audio interface,它含有hardware buffer,而这个hardware buffer是在声卡里面,不是内存.声卡的缓存是环状的,则ALSA中是将数据分成连续的片段然后传到按单元片段传输. 2.当我们通过麦克风讲话的声音搜集到声卡里之后,将内存从声卡设备文件中读取声音数据的过程就是录音过程:把内存中的声音数据写入到声卡的设备文件中可以实现音频文件. 3.我们在/dev/snd/目录下用ls命令就可以看到相关的声卡设备. 4.模/数(ADC)转换器将模拟电压…
转自:https://blog.csdn.net/dengjin20104042056/article/details/52435290 一.数字音频 音频信号是一种连续变化的模拟信号,但计算机只能处理和记录二进制的数字信号,由自然音源得到的音频信号必须经过一定的变换,成为数字音频信号之后,才能送到计算机中作进一步的处理. 数字音频系统通过将声波的波型转换成一系列二进制数据,来实现对原始声音的重现,实现这一步骤的设备常被称为模/数转换器(A/D).A/D转换器以每秒钟上万次的速率对声波进行采样,…
一.介绍 1.mixer:用来控制多个输入.输出的音量,也控制输入(microphone,line-in,CD)之间的切换,可以将多个信号组合或者叠加在一起.声卡上的混音器由多个混音通道组成,它们可以通过声卡驱动程序提供的设备文件/dev/mixer进行编程(对混音器进行操作的软件接口),混音器主要是对声卡的输入增益和输出增益进行调节.2.混音器的操作不符合典型的读/写操作模式,除了open和close系统调用,大部分通过ioctl系统调用来完成的.与/dev/dsp不同,/dev/mixer允…
http://blog.csdn.net/sea918/article/details/7249216   1.音频开发模型: OSS(open sound system)  linux/unix 平台的上早期的统一音频接口.linux kernl 2.6 版本以前其它提供两种设备文件以供编程. 常用的操作函数为open.close.read.write.ioctl. (/dev/dsp录音设备文件/dev/audio播放设备文件) ALSA(a)目前流行的编译框架.linux 2.6 版本发后…
从今天起,开始学习进程间通信相关的东东,关于socket的编程先告一段落了,在学习进程间通信之前,首先先要了解一些概念,所以,这次不开始真正的代码编写,先纯理论,理解了为之后的更深入的学习可以打下良好的基础,下面进入正题: 实际上这也是进程之间的两种关系,在学习这两种关系之前,需要回顾一下顺序程序与并发程序的特征: 顺序程序特征: ①.顺序性 顺序程序执行的顺序是按照指令的先后顺序来执行的,当前的指令需依赖于前一条指令,并与前一条指令构成了一定的因果关系,后一条指令的执行一定要在前一条指令的基础…
//网络编程客户端 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h>//htons()函数头文件 #include <ne…
当从一个文件描述符进行读写操作时,accept.read.write这些函数会阻塞I/O.在这种会阻塞I/O的操作好处是不会占用cpu宝贵的时间片,但是如果需要对多个描述符操作时,阻塞会使同一时刻只能处理一个操作,从而使程序的执行效率大大降低.一种解决办法是使用多线程或多进程操作,但是这浪费大量的资源.另一种解决办法是采用非阻塞.忙轮询,这种办法提高了程序的执行效率,缺点是需要占用更多的cpu和系统资源.所以,最终的解决办法是采用IO多路转接技术. IO多路转接是先构造一个关于文件描述符的列表,…
在UBUNTU系统上使用alsa库完成了对外播放的wav文件的案例. 案例代码: /** *test.c * *注意:这个例子在Ubuntu 12.04.1环境下编译运行成功. * */ #include <stdio.h> #include <stdlib.h> #include <alsa/asoundlib.h> int main(int argc, char *argv[]) { int i; int ret; int buf[128]; unsigned in…
case分支条件语句. case "string" in pattern_1) commands ;; pattern_2) commands ;; *) commands ;; esac 当条件语句中的string等于patern字符串时执行pattern下面命令. 当没有符合条件时,最后执行*). ";;"相当于switch语句中的break关键字,不加";;"会报错. for循环语句. for varname in list ; do co…
if 条件判断: 单分支的if语句if 判断条件: then statement1fi双分支的if语句if 判断条件;then statement1 statementelse statement3fi多分支的if语句if 判断条件1:then statement1 elif 判断条件2:then statement2 elif 判断条件3:then statement3 else statement4fi for循环for 变量 in 列表;do 循环体 done…
storysnail的Linux串口编程笔记 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据General Public License,v3 发布 GPLv3 许可证的副本可以在这里获得:http://www.gnu.org/licenses/gpl.html 本文档根据GNU Free Documentation License 1.3发布 GFDL1.3许可证的副本可以在这里获得:http://w…
本文属于转载,稍有改动,以利于学习. (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端        在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序. 比如我们使用ftp程序从另外一        个地方获取文件的时候,是我们的ftp程序主动同外面进行通信(获取文件), 所以这个地方我们的ftp程序就是客户端程…
(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端        在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序. 比如我们使用ftp程序从另外一        个地方获取文件的时候,是我们的ftp程序主动同外面进行通信(获取文件), 所以这个地方我们的ftp程序就是客户端程序. 服务端        和客户端相…
(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端        在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序. 比如我们使用ftp程序从另外一        个地方获取文件的时候,是我们的ftp程序主动同外面进行通信(获取文件), 所以这个地方我们的ftp程序就是客户端程序. 服务端        和客户端相…
原地址:http://www.cnblogs.com/duzouzhe/archive/2009/06/19/1506699.html (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端        在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序. 比如我们使用ftp程序从另外一        个地方获取文件的…
(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端        在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序. 比如我们使用ftp程序从另外一        个地方获取文件的时候,是我们的ftp程序主动同外面进行通信(获取文件), 所以这个地方我们的ftp程序就是客户端程序. 服务端        和客户端相…
在linux网络编程[1-3]中,我们编写的网络程序仅仅是为了了解网络编程的基本步骤,实际应用当中的网络程序并不会用那样的.首先,如果服务器需要处理高并发访问,通常不会使用linux网络编程(三)中那样的多进程方式,因为那样相当耗系统资源.实际当中,网络程序多使用select.poll.epoll等多路IO复用来进行编写.在进入主题之前,我们先来了解一下linux的IO模型. 现有的linux IO模型有5种:阻塞式IO模型,非阻塞式IO模型,IO复用模型,信号驱动式IO模型,异步IO模型. 关…
运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程 有关前两篇的链接: 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 运用Python语言编写获取Linux基本系统信息(二):文件系统使用情况获取 一.实验环境: Python2.7.10.pycharm.VM虚拟机.CentOS6.3.mysql 二.MySQLdb模块: MySQLdb模式是Python中专门连接MySQL数据库的模块,另外Python开发环境的搭…
今天主要是将前几天搞的Linux学习的心得写出来,希望帮助更多的人进行,方便从事Unix和Linux编程的同行和刚入门者.主要介绍三种工具并给出安装过程,请大家不必怀疑这个博文,此博文是我自己原创.请大家放心使用. 此文共4个教程(教程1-FileZilla软件安装,教程2-Secure CRT软件安装使用,教程3-eclipse for c++/c,eclipse for c/c++ FileZilla Secure CRT配合使用教程). 工具1...FileZilla软件. 此软件是一种进…
在linux下也可以写一个类似麦克风和喇叭这样的应用程序,只要打开/dev/dsp这个设备驱动,对该设备read读操作相当于录音,对这个设备write写操作相当于放音. 对于以下出现的一些参数我就不多说了,百度很多,大家可以自行查找,关于音频编程还有很多,alsa和OSS混合编程是目前用得最多的,如果对这方面有兴趣的可以深入研究. 以下是当时我在学习这方面知识的时候写的一个测试程序: 测试的结果就是当对着麦克风说话时,喇叭会放出声音,前提是你的linux系统需要安装/dev/dsp这个驱动. 按…
Linux 下的三种时间介绍: Access Time:简写为atime,表示文件访问的时间,当文件内容被访问时,更新atime时间 Modify Time:简写为mtime,表示文件内容修改的时间,当文件的内容被修改时,mtime更新这个时间. Change Time:简写为ctime,表示文件的属性修改的时间,当文件的属性被修改时,更ctime这个时间,例如文件的链接数,大小,权限等. 1.查看三种时间 [root@izm5e73eit76putx1pufjoz ~]# stat hello…
今天继续研究管道的内容,这次主要是研究一下命名管道,以及与之前学过的匿名管道的区别,话不多说,进入正题: 所以说,我们要知道命名管道的作用,可以进行毫无关系的两个进程间进行通讯,这是匿名管道所无法实现的. 下面来用命令创建一下: 用程序来创建: 另外管道文件是一种特珠类型的文件,所以不能用vim去像文本文件去编辑 也可以能过man帮助来查看到: 下面用一个实际的例子来说明下: 编译运行: 可以看到,此时运行已经被阻塞了,这时,我们来写一个往有名管道中写数据的程序,看看是否能解除阻塞? 这时,两个…
一.前序 这里了解一下各个参数的含义以及一些基本概念. 声音是连续模拟量,计算机将它离散化之后用数字表示,就有了以下几个名词术语. 样本长度(sample):样本是记录音频数据最基本的单位,计算机对每个通道采样量化时数字比特位数,常见的有8位和16位. 通道数(channel):该参数为1表示单声道,2则是立体声. 帧(frame):帧记录了一个声音单元,其长度为样本长度与通道数的乘积,一段音频数据就是由苦干帧组成的. 采样率(rate):每秒钟采样次数,该次数是针对帧而言,常用的采样率如8KH…
一.数字音频 音频信号是一种连续变化的模拟信号,但计算机仅仅能处理和记录二进制的数字信号.由自然音源得到的音频信号必须经过一定的变换,成为数字音频信号之后,才干送到计算机中作进一步的处理. 数字音频系统通过将声波的波型转换成一系列二进制数据,来实现对原始声音的重现,实现这一步骤的设备常被称为模/数转换器(A/D).A/D转换器以每秒钟上万次的速率对声波进行採样,每个採样点都记录下了原始模拟声波在某一时刻的状态,通常称之为样本(sample),而每一秒钟所採样的数目则称为採样频率,通过将一串连续的…