转载于:http://blog.csdn.net/dux003/article/details/5459423

#include

#include

#include

#include

#include

void usage(const char* self)

{

printf("usage:/n");

printf("/t%s
[-c channels -r rate -s samplesize] wavfile/n",
self);

};

int set_fmt(int fd, int channels, int rate, int
samplesize)

{

int c =
channels;

if
(ioctl(fd, SNDCTL_DSP_CHANNELS, &c) == -1)

exit(1);

if
(ioctl(fd, SNDCTL_DSP_SPEED, &rate) == -1)

exit(1);

if
(ioctl(fd, SNDCTL_DSP_SAMPLESIZE, &samplesize) ==
-1)

exit(1);

return
0;

}

int main(int argc, char **argv)

{

int i =
1;

char*
filename = NULL;

int channels
= 1;

int
samplerate = 8000;

int
samplesize = 16;

int
dsp;

int
fd;

char
buf[1024];

int
len;

if
(argc%2)

{

usage(argv[0]);

exit(1);

}

while (i
< argc)

{

if (argv[i][0] != '-')

{

filename = argv[i];

i++;

}

else

{

if (i+1 < argc)

{   switch
(argv[i][1])

{

case 'c':

channels = atoi(argv[i+1]);

i += 2;

break;

case 'r':

samplerate = atoi(argv[i+1]);

i += 2;

break;

case 's':

samplesize = atoi(argv[i+1]);

i += 2;

break;

default:

perror("bad option/n");

exit(1);

}

}

else

{

perror("bad options/n");

exit(1);

}

}

}

dsp =
open("/dev/dsp", O_RDWR);

if (dsp ==
-1)

{

perror("can not open /dev/dsp/n");

exit(1);

}

set_fmt(dsp,
channels, samplerate, samplesize);

fd =
open(filename, O_RDWR);

if (fd ==
-1)

{

close(dsp);

fprintf(stderr, "can not open file %s/n",
filename);

exit(1);

}

while ((len
= read(fd, buf, 1024)) > 0)

{

write(dsp, buf, len);

}

close(fd);

close(dsp);

return
0;

}

使用/dev/dsp的wav文件播放器源码的更多相关文章

  1. Android音乐播放器源码(歌词.均衡器.收藏.qq5.0菜单.通知)

    一款Android音乐播放器源码,基本功能都实现了 qq5.0菜单(歌词.均衡器.收藏.qq5.0菜单.通知) 只有向右滑动出现,菜单键和指定按钮都还没有添加. 源码下载:http://code.66 ...

  2. 一款非常简单的android音乐播放器源码分享给大家

    一款非常简单的android音乐播放器源码分享给大家,该应用虽然很小,大家常用的播放器功能基本实现了,可能有点还不够完善,大家也可以自己完善一下,源码在源码天堂那里已经有了,大家可以到那里下载学习吧. ...

  3. 一步步实现windows版ijkplayer系列文章之三——Ijkplayer播放器源码分析之音视频输出——音频篇

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  4. 一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  5. 项目源码--Android3D影音播放器源码

      下载源码   技术要点: 1.本地音乐管理 2.音频流的解码 3. UI控件的综合使用 4. 视频流的解码 5. 动态更换皮肤 6. 3D效果的实现 7. 源码带详细的中文注释 ...... 详细 ...

  6. 实例源码--Android简单音乐播放器源码

      下载源码   技术要点: 1.本地音乐管理 2.在线音乐听歌.下载 3.音频流的解码 4. HTTP通信模块 5. Sqlite数据库 6. 源码带详细的中文注释 ...... 详细介绍: 1.本 ...

  7. 【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)

    作者 : 韩曙亮  博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csd ...

  8. HTML5音频(自定义mp3播放器源码)

    audio对象 src兼容.ogg .wav .mp3 <audio controls src='data/imooc.wav'></audio> width autoplay ...

  9. H5音乐播放器源码地址

    源码获取 https://pan.baidu.com/s/1pR_bhIFFQWU6TK9ZvrRWIA      安卓安装包下载地址 https://pan.baidu.com/s/1Z8HF5LY ...

随机推荐

  1. poj1523割顶-点双联通

    题意:求出所有的割顶,而且还有输出该割顶连接了几个点双连通分量 题解:直接tarjan求点双联通分量就好了,可以在加入边的时候记录加入次数,大于1的都是桥,输入输出很恶心,注意格式 #include& ...

  2. Tomcat翻译--The Host Container

    原文:http://tomcat.apache.org/tomcat-7.0-doc/config/host.html Introduction(介绍) The Host element repres ...

  3. 解析Ceph: 恢复与数据一致性

    转自:https://www.ustack.com/blog/ceph-internal-recovery-and-consistency/ 作为一个面向大规模的分布式存储系统,故障处理是作为一个常态 ...

  4. linux查看网卡速度

    ethtool eth0 会包含速度模式等各项属性信息   lspci|grep -i ether 可以查看硬件设备具体型号,会包含硬件厂商及信息   dmesg |grep -i eth 会显示系统 ...

  5. NAVICAT PREMIUM 初识

    1 问题运行SQL取数语句出错?. 答案:因为运行SQL文件时没有这个表.新的数据库里面 解决方法: 获取需要建立的二维表创建语句 新建查询 输入语句,点击运行即可 解释注释语句: 主体为五个字段的主 ...

  6. Nodejs调试技术总结

    调试技术与开发技术构成了软件开发的基石.目前Nodejs作为新型的Web Server开发栈倍受开发者关注.总的来说Nodejs的应用程序主要有两部分:JavaScript编写的js模块和C语言编译的 ...

  7. c++primer 第三章编程练习答案

    3.7.1 #include<iostream> int main() { using namespace std; ; int height,inch,foot; cout <&l ...

  8. hdoj-2647-Reward(拓扑排序)

    题目链接: /* Name:hdoj-2647-Reward Copyright: Author: Date: 2018/4/11 15:59:18 Description: */ #include ...

  9. 使用python实现两个文件夹里文件的对比(包含内容的对比)

    #-*-coding:utf-8-*- #=============================================================================== ...

  10. webpack 插件

    插件可以完成更多 loader 不能完成的功能. 插件的使用一般是在 webpack 的配置信息 plugins 选项中指定. Webpack 本身内置了一些常用的插件,还可以通过 npm 安装第三方 ...