转载于: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. 在CentOS6.4中安装配置LAMP环境的详细步骤 - Leroy-LIZH

    本文详细介绍了CentOS6.4系统中安装LAMP服务并对其进行配置的过程,即安装Apache+PHP+Mysql,参照了网上大神的设置,其他Linux发行系统可以参考~ 在本文中部分命令操作需要ro ...

  2. 有关linux下redis overcommit_memory的问题,有需要的朋友可以参考下。

    我在安装redis-4.0.6后,启动时出现一些问题,如下: :M Jan ::! Background save may fail under low memory condition. To fi ...

  3. HDU 2203 kmp

    http://acm.hdu.edu.cn/showproblem.php?pid=2203 亲和串 Time Limit: 3000/1000 MS (Java/Others)    Memory ...

  4. cassandra cqlsh 和 python客户端

    Keyspaces A cluster is a container for keyspaces. A keyspace is the outermost container for data in ...

  5. [转载]java导出word的5种方式

    在网上找了好多天将数据库中信息导出到word中的解决方案,现在将这几天的总结分享一下.总的来说,java导出word大致有5种解决方案: 1:Jacob是Java-COM Bridge的缩写,它在Ja ...

  6. 【bzoj4987】Tree 树形背包dp

    题目描述 从前有棵树. 找出K个点A1,A2,…,Ak. 使得∑dis(AiAi+1),(1<=i<=K-1)最小. 输入 第一行两个正整数n,k,表示数的顶点数和需要选出的点个数. 接下 ...

  7. IntelliJ IDEA 12创建Maven管理的Java Web项目(图解)

    转:http://blog.csdn.net/zht666/article/details/8673609/ 本文主要使用图解介绍了使用IntelliJIDEA 12创建Maven管理的JavaWeb ...

  8. 【LeetCode】029. Divide Two Integers

    Divide two integers without using multiplication, division and mod operator. If it is overflow, retu ...

  9. ZIP 算法详解 (转!)

    zip 的压缩原理与实现(lz77 算法压缩) 无损数据压缩是一件奇妙的事情,想一想,一串任意的数据能够根据一定的规则转换成只有原来 1/2 - 1/5 长度的数据,并且能够按照相应的规则还原到原来的 ...

  10. ipad与iphone的屏幕分辨率

    1.ipad分辨率,iphone 6 iPhone设备      尺寸 分辨率                   点iPhone 3和3s  3.5英寸    (320×480)         3 ...