Linux环境下用c语言写的播放wav文件的小程序
http://blog.csdn.net/noah1987/archive/2008/10/21/3118934.aspx
本程序可以读取.wav文件,然后进行播放。
使用前,请确认您是否安装音频驱动。
确认方法:cat /etc/sndstat,如果显示无此设备,则没有安装驱动。
安装驱动很简单,到oss.com上下载音频驱动,然后按照网上的教程进行就可以了。
源代码如下:
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <stdlib.h>
#include <stdio.h>
#include <linux/soundcard.h>
/* 下面的三个参数是跟具体文件相关的,文件什么样,就要设置成什么样 */
#define RATE 11025
#define SIZE 16
#define CHANNELS 1 // 1表示单声道,2为立体声
/* ................ */
unsigned
char
buf[RATE*SIZE/8]; //buf里面正好放一秒钟的音频,下面的计时还要用
int
main()
{
int
fd;
int
wavfd; //wav文件的描述符
int
arg;
/* ..ioctl..... */
int
status;
/* ........ */
/* ...... */
fd = open(
"/dev/dsp"
, O_RDWR
);
if
(fd < 0) {
printf(
"open of /dev/dsp failed"
);
exit(1);
}
wavfd = open(
"12193767609.wav"
,O_RDONLY);
if
(wavfd < 0) {
printf(
"open of wav failed"
);
 
相关文档:
Service Discovery Protocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。
服务发现协议(SDP或Bluetooth SDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetooth client发现可用bluetooth server服务和它们的特征的方法。 ......
一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......
我是一个计算机专业的本科生,现在我们刚刚学完了数据结构。据说数据结构对于我们编程很重要,可是我现在不知怎么把数据结构和C语言结合起来,以便更好的进行c语言编程。有哪位高手指点一二,在下感激不尽!
......
一、从C与C++编译连接方式深入理解extern "C"
<1>.C和C++对函数的处理方式是不同的.被extern "C"修饰的变量和函数是按照C语言方式编译和连接的.extern "C"用于实现C++与C及其它语言的混合编程。
<2>.未加extern “C”声明时的编译方式
首先看看C++中对类似C的函数是怎样编译的。
作为一种面向 ......
原文
Python和C分别有着各自的优缺点,用Python开发程序速度快,可靠性高,并且有许多现成模块可供使用,但执行速度相对较慢;C语言则正好相反,其执行速度快,但开发效率低。为了充分利用两种语言各自的优点,比较好的做法是用Python开发整个软件框架,而用C语言实现其关键模块。本文介绍如何利用C语言来扩展Python的功 ......