织梦CMS - 轻松建站从此开始!

罗索

Linux音频设备操作

落鹤生 发布于 2010-03-10 21:16 点击:次 
音频设备操作:为了将libmad解码后的PCM数据输出到本地的音频设备,需要调用OSS音频驱动API函数,具体的操作过程见下文。
TAG:

音频设备操作

为了将libmad解码后的PCM数据输出到本地的音频设备,需要调用OSS音频驱动API函数,具体的操作过程为[17] [18]:

(1)包含必要的头文件,并定义合适的输出缓冲区

#include <ioctl.h>

#include <unistd.h>

#include <fcntl.h>

#include <sys/soundcard.h>

#define BUF_SIZE 4096

int audio_fd;

unsigned char audio_buffer[BUF_SIZE];

(2)打开音频设备/dev/sound/dsp

if ((audio_fd = open("/dev/sound/dsp", O_WRONLY, 0)) == -1) {

perror("/dev/sound/dsp");                       //如果打不开,提示出错

exit(1);}

(3)设置采样格式、声道数和采样速率

int format;                                          //设置采样格式

format = AFMT_S16_LE;               //设置为16bit little endian格式

if (ioctl(audio_fd, SNDCTL_DSP_SETFMT, &format) == -1) {

perror("SNDCTL_DSP_SETFMT");           //如果设置格式失败,提示出错

exit(1);}                                                  //退出程序

int channels = 2;                                       //设置两声道

if (ioctl(audio_fd, SNDCTL_DSP_CHANNELS, &channels) == -1) {

perror("SNDCTL_DSP_CHANNELS");       //如果设置声道数失败,提示出错

exit(1);}

int speed = 44100;                                     //设置采样速率

if (ioctl(audio_fd, SNDCTL_DSP_SPEED, &speed)==-1) {

perror("SNDCTL_DSP_SPEED");               //如果设置速率失败,提示出错

exit(1);}

(4)关闭音频设备

close(audio_fd);

audio_fd=-1;

(秩名)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201003/8725.html]
本文出处:网络博客 作者:秩名
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容