在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…
1. 背景 在<Jasper语音助理介绍>中, 介绍了Linux音频系统, 本文主要介绍了Linux下音频编程相关内容. 音频编程主要包括播放(Playback)和录制(Record), 大概过程简单总结如下:播放:  将音频文件进行解码(Decode)生成PCM数据, 并将其送入音频设备中播出.录制:  将声音进行采集, 编码(Encode)后按照特定文件格式保存至音频文件. 2. 基础知识 2.1 声音和声卡 声音是由物体振动产生的声波, 是通过介质(空气或固体.液体)传播并能被人或动物听…
Linux音频编程指南 虽然目前Linux的优势主要体现在网络服务方面,但事实上同样也有着非常丰富的媒体功能,本文就是以多媒体应用中最基本的声音为对象,介绍如何在Linux平台下开发实际的音频应用程序,同时还给出了一些常用的音频编程框架. 一.数字音频 音频信号是一种连续变化的模拟信号,但计算机只能处理和记录二进制的数字信号,由自然音源得到的音频信号必须经过一定的变换,成为数字音频信号之后,才能送到计算机中作进一步的处理. 数字音频系统通过将声波的波型转换成一系列二进制数据,来实现对原始声音的重…
转自:https://blog.csdn.net/dengjin20104042056/article/details/52435290 一.数字音频 音频信号是一种连续变化的模拟信号,但计算机只能处理和记录二进制的数字信号,由自然音源得到的音频信号必须经过一定的变换,成为数字音频信号之后,才能送到计算机中作进一步的处理. 数字音频系统通过将声波的波型转换成一系列二进制数据,来实现对原始声音的重现,实现这一步骤的设备常被称为模/数转换器(A/D).A/D转换器以每秒钟上万次的速率对声波进行采样,…
转自: http://www.ibm.com/developerworks/cn/linux/l-audio/ Linux音频编程指南 虽然目前Linux的优势主要体现在网络服务方面,但事实上同样也有着非常丰富的媒体功能,本文就是以多媒体应用中最基本的声音为对象,介绍如何在Linux平台下开发实际的音频应用程序,同时还给出了一些常用的音频编程框架. 1 评论: 肖文鹏 (xiaowp@263.net), 自由软件爱好者 2004 年 2 月 01 日 内容 一.数字音频 音频信号是一种连续变化的…
未使用其他库, 只是使用 pywin32 调用系统底层 API 播放 wav 文件. # Our raison d'etre - playing sounds import pywintypes import struct import win32event import win32com.directsound.directsound as ds import os WAV_HEADER_SIZE = struct.calcsize('<4sl4s4slhhllhh4sl') def wav_…
from http://www.vckbase.com/index.php/wv/434 平时,你在多媒体软件的设计中是怎样处理声音文件的呢?使用Windows 提供的API函数 sndPlaySound来实现WAV文件的播放?但是,你有没有遇到过这种情况呢:当WAV文件大于可用内存时,sndPlaySound 函数就不能进行播放!!!那么,如何利用MCI播放大型音频文件呢? 本文将介绍一种方法. Windows支持两种RIFF(resource interchange file format,…
C#使用HWQPlayer类播放wav文件 类的代码: using System.IO; using System.Runtime.InteropServices; namespace HoverTreeSound.HewenqiFrame { internal class HWQPlayer { [DllImport("winmm.dll")] private static extern int sndPlaySoundA(byte[] lpszSoundName, int uFla…
WinAPI: sndPlaySound - 播放 wav 文件 //声明: sndPlaySound(   lpszSoundName: PChar; {声音文件}   uFlags: UINT{播放选项} ): BOOL; //uFlags 参数可选值: SND_SYNC      = ; {同步播放, 程序须等到播放完毕才向下执行} SND_ASYNC    = ; {异步播放, 在函数返回之后开始播放, 不影响程序继续执行} SND_NODEFAULT = ; {声音文件缺失时, 函数自…
LINUX下EXP命令全库备份数据库文件 1)建立备份目录,目录操作权限授权给Oracle用户 mkdir /backup  --创建backup文件夹 cd  /   --进入cd语句 ls  -l   --查看文件的信息 id oracle -- 查看oracle用户信息,授予oracle用户能操作新创建的备份目录 chown -R oracle:oinstall /backup --授予oracle用户操作权限给备份数据库文件/backup目录 ls -l  --查看文件的信息 2)建立备…
Linux下的音频编程中有OSS和ALSA,本篇文章将对ALSA进行相关介绍.ALSA提供一系列基于命令行的工具集,比如混音器(mixer),音频文件播放器(aplay),以及控制特定声卡特定属性的工具. 一.ALSA的 API主要分为以下几种接口:(1)控制接口:提供灵活的方式管理注册的声卡和对存在的声卡进行查询.(2)PCM接口:管理数字音频回放(playback)和录音(capture)的接口. (Pulse Code Modulation(脉冲编码调制).这个词描述了一种用数字化形式表示…
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 版本发后…
一.声卡 1.声卡是audio interface,它含有hardware buffer,而这个hardware buffer是在声卡里面,不是内存.声卡的缓存是环状的,则ALSA中是将数据分成连续的片段然后传到按单元片段传输. 2.当我们通过麦克风讲话的声音搜集到声卡里之后,将内存从声卡设备文件中读取声音数据的过程就是录音过程:把内存中的声音数据写入到声卡的设备文件中可以实现音频文件. 3.我们在/dev/snd/目录下用ls命令就可以看到相关的声卡设备. 4.模/数(ADC)转换器将模拟电压…
在上一篇文章RIFF和WAVE音频文件格式中对WAV的文件格式做了介绍,本文将使用标准C++库实现对数据为PCM格式的WAV文件的读写操作,只使用标准C++库函数,不依赖于其他的库. WAV文件结构 WAV是符合RIFF标准的多媒体文件,其文件结构可以如下: WAV 文件结构 RIFF块 WAVE FOURCC fmt 块 fact 块(可选) data块(包含PCM数据) 首先是一个RIFF块,有块标识RIFF,指明该文件是符合RIFF标准的文件:接着是一个FourCC,WAVE,该文件为WA…
开更 大概最后做了一个能播放无损音乐(无压缩.不需解码)的播放器 原理是基于dosbox的模拟声卡,通过硬件之间的相互通讯做到的 关于详细内容接下来再讲. 一.从dosbox入手 我们知道cpu可以直接输出到蜂鸣器的端口,然后让蜂鸣器发声.但是蜂鸣器的局限性很大,大多数蜂鸣器只支持两种电压,也就只能发出非常单一的声音.所以,从播放音乐角度来讲,调用蜂鸣器是比较简单但局限性很大的.所以这里不会采用调用蜂鸣器的做法. 要用8086发出复杂的声音,最简单的想法就是调用声卡,但在dos环境下,想调用wi…
//方法一(要符合RIFF规范) 1 QSound::play("E:/Projects/报警声1-1.wav"); //方法二(要符合RIFF规范) 1 QSoundEffect in_effect; 2 in_effect.setSource(QUrl::fromLocalFile("E:/Projects/报警声1-1.wav")); 3 in_effect.setLoopCount(QSoundEffect::Infinite); 4 in_effect.s…
一.介绍 1.mixer:用来控制多个输入.输出的音量,也控制输入(microphone,line-in,CD)之间的切换,可以将多个信号组合或者叠加在一起.声卡上的混音器由多个混音通道组成,它们可以通过声卡驱动程序提供的设备文件/dev/mixer进行编程(对混音器进行操作的软件接口),混音器主要是对声卡的输入增益和输出增益进行调节.2.混音器的操作不符合典型的读/写操作模式,除了open和close系统调用,大部分通过ioctl系统调用来完成的.与/dev/dsp不同,/dev/mixer允…
要使用waveout函数组,族,首先要知道几个数据结构,首先是这个 typedef struct tWAVEFORMATEX { WORD wFormatTag; /* 格式的类型 */ WORD nChannels; /* 通道数 */ DWORD nSamplesPerSec; /* 采样频率 */ DWORD nAvgBytesPerSec; /* 比特率 采样率*声道数*采样位数/8 */ WORD nBlockAlign; /* 一次采样的宽度 通道数*采样位数/8 */ WORD w…
GNU Make简介 大型项目的开发过程中,往往会划分出若干个功能模块,这样可以保证软件的易维护性. 作为项目的组成部分,各个模块不可避免的存在各种联系,如果其中某个模块发生改动,那么其他的模块需要相应的更新.如果通过手动去完成这个工作的话,对于小型的项目可能还行,但是对于比较大型的项目就几乎是不可能的. 因此Linux 系统提供了一个自动维护和生成目标程序的工具 make,它可以根据各个模块的更改情况去重新编译连接目标代码 Make 工具的作用就是实现编译连接过程的自动化.它定义了一种语言,用…
using System; using System.Media; namespace ConsoleApplication { class Program { static void Main(string[] args) { SoundPlayer s = new SoundPlayer("test.wav"); s.Play(); Console.Read(); } } }…
from http://blog.csdn.net/hnlyyk/article/details/50856268 Linux系统使用man sendfile,查看sendfile原型如下: #include <sys/sendfile.h> ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count); 参数特别注意的是:in_fd必须是一个支持mmap函数的文件描述符,也就是说必须指向真实文件,不能使socket描…
import java.io.File; import java.io.IOException; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.DataLine.Info; import javax.sound.sampled.LineUna…
我们知道,用TCP实现文件传输很简单.相对于TCP,因为UDP是面向无连接.不可靠的传输协议,所以我们需要考虑丢包和后发先至(包的顺序)的问题,所以我们想要实现UDP传输文件,则需要解决这两个问题.方法就是给数据包编号,按照包的顺序接收并存储,接收端接收到数据包后发送确认信息给发送端,发送端接收确认数据以后再继续发送下一个包,如果接收端收到的数据包的编号不是期望的编号,则要求发送端重新发送. 下面是我用linux C实现的一个Demo,定义一个包的结构体,其中包含数据和包头,包头里包含包的编号和…
继上篇:Android : alsa-lib 移植 ,这篇随笔实现一个demo基于移植好的alsa库在Android平台上播放wav文件: 一.利用ffmeg将一个mp3文件转换成wav文件: (1)ubuntu安装ffmeg工具: sudo add-apt-repository ppa:djcj/hybrid sudo apt-get update sudo apt-get install ffmpeg (2)mp3转wav:   ffmpeg -i duandian.mp3 -f wav d…
用 Qt 的 QAudioOutput 类播放 WAV 音频文件 最近有一个项目,需要同时控制 4 个声卡播放不同的声音,声音文件很简单就是没有任何压缩的 wav 文件. 如果只是播放 wav 文件,那么 Qt 里简单的 QSound 类是最适合的.但是 QSound 有一个很大的缺陷就是无法选择用哪个声卡.一番研究之后,决定用 QAudioOutput 来播放 WAV 音频文件. 网上也能找到几篇相关的文章,比如: http://blog.csdn.net/qyee16/article/det…
对于WAV文件来说,可以直接使用ffplay命令播放,而且不用像PCM那样增加额外的参数.因为WAV的文件头中已经包含了相关的音频参数信息. ffplay in.wav 接下来演示一下如何使用SDL播放WAV文件. 初始化子系统 // 初始化Audio子系统 if (SDL_Init(SDL_INIT_AUDIO)) { qDebug() << "SDL_Init error:" << SDL_GetError(); return; } 加载WAV文件 // 存…
资源下载 #本文PDF版下载 Python解析Wav文件并绘制波形的方法 #本文代码下载 Wav波形绘图代码 #本文实例音频文件night.wav下载 音频文件下载 (石进-夜的钢琴曲) 前言 在现在繁忙的生活中,我们经常会听些歌来放松一下自己,我们经常会从各种播放软件中听自己喜欢的歌,并且往往我们会下载一部分歌曲,而现在音频的种类也相当繁多,像是Wav,Mp3,FLAC,AAC等等很多格式,最近由于需要做一个能够分析Wav格式音频的波形来取得一些数据比如获取人录音时是否说完等等用途.本周先对解…
目录 第1章保存    1 1.1 操作    1 1.2 波形说明    4 1.3 波形整形    5 1.4 压缩    8 第2章载入    9 2.1 操作    9 2.2 音量    9 第3章 wav2bin代码解析    10 3.1 读取一个数据位    10 第1章保存 本章将介绍如何把PC-1500机内的BASIC代码保存到PC的wav文件内.您需要:PC-1500的底座(CE-150).录音软件(本章以Cool Edit 2.1为例进行说明).E500Comm14.11…
本设计思路:先打开一个普通wav音频文件,从定义的文件头前面的44个字节中,取出文件头的定义消息,置于一个文件头的结构体中.然后打开alsa音频驱动,从文件头结构体取出采样精度,声道数,采样频率三个重要参数,利用alsa音频驱动的API设置好参数,最后打开wav文件,定位到数据区,把音频数据依次写到音频驱动中去,开始播放,当写入完成后,退出写入的循环. 注意:本设计需要alsa的libasound-dev的库,编译链接时需要连接 —lasound. #include<stdio.h>#incl…