转载于: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. JavaScript 编程模式

    编程模式,是源自经验和探索总结出的最佳实践方案,既有助于可读性和可维护性,也有助于提升整体性能. 行为隔离 总则:结构.样式和行为之间两两隔离. 避免在结构中使用内联事件 尽量少用 <scrip ...

  2. MinGW main()

    MinGW没有wmain入口函数,为了获取宽字符的参数,可以用系统API函数GetCommandLineW. main.cpp #include <iostream> #include & ...

  3. 将一个jar包放到linux下定时执行

    将一个jar包放到linux下定时执行 1.在dbtodb文件夹下新建一个dbtodb.sh,脚本内容为: #!/bin/bash cd /usr/dbtodb/ java -jar dbtodb.j ...

  4. uva10648 概率dp

    https://vjudge.net/problem/UVA-10648 将n个不同小球放入m个不同盒子,放入每个盒子的概率相同,问放完之后仍有空盒子的概率: 还是太傻- -,可以倒着计算出放完之后没 ...

  5. iOS-使用ALAssetsLibrary获取相册图片视频

    用ALAssetsLibrary获取相册图片视频 ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; [library enumera ...

  6. 编写高效的CSS选择器

    高效的CSS已经不是一个新话题,也不是一个我非得重拾的话题,但是,它却是自我在SKY工作以后,真正感兴趣并始终关注的一个话题. 很多人或者忘记了,或者仅仅是没有意识到,CSS可以是高效的也可能导致低能 ...

  7. Git_学习_01_ git 安装与配置

    参考:windows下Git BASH安装 二.参考资料 1. windows下Git BASH安装

  8. 剑指offer--13.二进制中1的个数

    就是猜测试数据没有负数,哈哈 ----------------------------------------------------------------- 时间限制:1秒 空间限制:32768K ...

  9. L119

    A big collaboration is trying to understand diseases of the psycheDiseases of the psyche have always ...

  10. uva11489 - Integer Game(考思维,找规律)

    从S开始时只能是两种情况: 1.现在总和已经是3的倍数了,那么因为每人每次只能拿走一个数,要保持拿走之后依然是3的倍数,那么就只能拿3,6,9这类数,用num统计一下,看看num奇偶性就知道谁最后拿了 ...