使用/dev/dsp的wav文件播放器源码
转载于: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文件播放器源码的更多相关文章
- Android音乐播放器源码(歌词.均衡器.收藏.qq5.0菜单.通知)
一款Android音乐播放器源码,基本功能都实现了 qq5.0菜单(歌词.均衡器.收藏.qq5.0菜单.通知) 只有向右滑动出现,菜单键和指定按钮都还没有添加. 源码下载:http://code.66 ...
- 一款非常简单的android音乐播放器源码分享给大家
一款非常简单的android音乐播放器源码分享给大家,该应用虽然很小,大家常用的播放器功能基本实现了,可能有点还不够完善,大家也可以自己完善一下,源码在源码天堂那里已经有了,大家可以到那里下载学习吧. ...
- 一步步实现windows版ijkplayer系列文章之三——Ijkplayer播放器源码分析之音视频输出——音频篇
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- 一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- 项目源码--Android3D影音播放器源码
下载源码 技术要点: 1.本地音乐管理 2.音频流的解码 3. UI控件的综合使用 4. 视频流的解码 5. 动态更换皮肤 6. 3D效果的实现 7. 源码带详细的中文注释 ...... 详细 ...
- 实例源码--Android简单音乐播放器源码
下载源码 技术要点: 1.本地音乐管理 2.在线音乐听歌.下载 3.音频流的解码 4. HTTP通信模块 5. Sqlite数据库 6. 源码带详细的中文注释 ...... 详细介绍: 1.本 ...
- 【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csd ...
- HTML5音频(自定义mp3播放器源码)
audio对象 src兼容.ogg .wav .mp3 <audio controls src='data/imooc.wav'></audio> width autoplay ...
- H5音乐播放器源码地址
源码获取 https://pan.baidu.com/s/1pR_bhIFFQWU6TK9ZvrRWIA 安卓安装包下载地址 https://pan.baidu.com/s/1Z8HF5LY ...
随机推荐
- hdu 5244 inverse(分治¥)
inverse Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- hdu 2490 队列优化dp
http://acm.hdu.edu.cn/showproblem.php?pid=2490 Parade Time Limit: 4000/2000 MS (Java/Others) Memo ...
- TCP/IP Socket 的理解
网络由下往上分为:物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. TCP 协议对应于传输层,HTTP 协议对应应用层,Socket 则是对 TCP/IP 协议的封装. ...
- vue项目组件的全局注册
在vue-cli项目中,我们经常会封装自己的组件,并且要在多个界面中引用它,这个时候就需要全局注册组件. 首先我们会封装自己的组件,比如twoDimensionTable文件夹下的index.vue: ...
- 自动部署基于Maven的war文件到远程Tomcat
转载自:https://www.cnblogs.com/jtlgb/p/7018705.html Tomcat 7发布URL = http://localhost:8080/manager/text命 ...
- weinre
https://www.cnblogs.com/diva/p/3995674.html
- Maven环境下多模块项目构建
Maven环境下多模块项目构建 一.新建项目 1.建立我们的父模块par 2.建立我们的子模块dao层 3.建立我们的子模块service层 4.建立我们的子模块web层 5.全部配置完成后,怎么把我 ...
- Mycat 在vscode中的开发配置
mycat是国产目前最被追捧的一款分布式数据库集群软件,有一些公司对数据库和应用都有自己的集群方案,但是更多的是一些面对庞大的数据量,而束手无策. 对于这种问题,我想百分之80遇到的是数据库的瓶颈,所 ...
- Yii的常用URL和渲染方法
当前页面url Yii::app()->request->url;跳转前一个页面url $this->redirect(Yii::app()->request->url ...
- 将非Maven管理的jar打包到Maven本地资源库
这里有2个案例,需要手动发出Maven命令包括一个 jar 到 Maven 的本地资源库. 要使用的 jar 不存在于 Maven 的中心储存库中. 您创建了一个自定义的 jar ,而另一个 Mave ...