linux 查看wav文件内容,Linux 播放wav文件
Linux下和声卡相关的文件有许多,如采集数字样本的/dev/dsp文件,针对混音器的/dev/mixer文件以及用于音序器的/dev /sequencer等。文件/dev/audio是一个基于兼容性考虑的声音设备文件,它实际是到上述数字设备的一个映射,它最大的特色或许是对诸如 wav这类文件格式的直接支持。我们下面的例子即使用了此设备文件实现了一个简单的录音机:我们从声卡设备(当然要用麦克风)读取音频数据,并将它存放到 文件test.wav中去。要播放这个wav文件,只要如前面所述,使用命令cp test.wav >/dev/audio即可,当然你也可以用Linux下其他的多媒体软件来播放这个文件。
1.[代码]cpp代码
/* 此文件中定义了下面所有形如SND_的变量*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define OPEN_DSP_FAILED 0x00000001 /*打开 dsp 失败!*/
#define SAMPLERATE_STATUS 0x00000002 /*samplerate status failed*/
#define SET_SAMPLERATE_FAILED 0x00000003 /*set samplerate failed*/
#define CHANNELS_STATUS 0x00000004 /*Channels status failed*/
#define SET_CHANNELS_FAILED 0x00000005 /*set channels failed*/
#define FMT_STATUS 0x00000006 /*FMT status failed*/
#define SET_FMT_FAILED 0x00000007 /*set fmt failed*/
#define OPEN_FILE_FAILED 0x00000008 /*opem filed failed*/
int P8100_Audio_Play(char *pathname,int nSampleRate,int nChannels,int fmt)
{
int dsp_fd,mix_fd,status,arg;
dsp_fd = open("/dev/dsp" , O_RDWR); /*open dsp*/
if(dsp_fd < 0)
{
return OPEN_DSP_FAILED;
}
arg = nSampleRate;
status = ioctl(dsp_fd,SOUND_PCM_WRITE_RATE,&arg); /*set samplerate*/
if(status < 0)
{
close(dsp_fd);
return SAMPLERATE_STATUS;
}
if(arg != nSampleRate)
{
close(dsp_fd);
return SET_SAMPLERATE_FAILED;
}
arg = nChannels; /*set channels*/
status = ioctl(dsp_fd, SOUND_PCM_WRITE_CHANNELS, &arg);
if(status < 0)
{
close(dsp_fd);
return CHANNELS_STATUS;
}
if( arg != nChannels)
{
close(dsp_fd);
return SET_CHANNELS_FAILED;
}
arg = fmt; /*set bit fmt*/
status = ioctl(dsp_fd, SOUND_PCM_WRITE_BITS, &arg);
if(status < 0)
{
close(dsp_fd);
return FMT_STATUS;
}
if(arg != fmt)
{
close(dsp_fd);
return SET_FMT_FAILED;
}/*到此设置好了DSP的各个参数*/
FILE *file_fd = fopen(pathname,"r");
if(file_fd == NULL)
{
close(dsp_fd);
return OPEN_FILE_FAILED;
}
int num = 3*nChannels*nSampleRate*fmt/8;
int get_num;
char buf[num];
while(feof(file_fd) == 0)
{
get_num = fread(buf,1,num,file_fd);
write(dsp_fd,buf,get_num);
if(get_num != num)
{
close(dsp_fd);
fclose(file_fd);
return 0;
}
}
close(dsp_fd);
fclose(file_fd);
return 0;
}
int main()
{
int value;
value = P8100_Audio_Play("/windows/C/WINDOWS/Media/Windows Startup.wav",44100,2,16);
//注意播放文件的路径哦!!
fprintf(stderr,"value is %d",value);
return 0;
}
linux 查看wav文件内容,Linux 播放wav文件相关推荐
- linux查看删除init内容,linux常用命令
图形界面启动 startx 关机 shutdown -h now 立刻关机 shutdown -r now 立刻重启 reboot 立刻重启 注销 logout 记事本 vi 文件名 进入后 i 插入 ...
- linux 查看war包内容,linux解压war包(示例代码)
可以用unzip命令 unzip project.war -d project 这样就在当前目录下解压project.war到project目录里面,参数-d的意思是创建project目录 附:unz ...
- linux查看启动配置文件内容,Linux开机启动项的查看和设置方法总结
一.查看开机自启项 1.Centos7自启项查看方式从Centos6的chkconfig改为: systemctl list-unit-files 2.用grep过滤查看,比如: 查看启动项: sys ...
- linux vim无法编辑文件内容,Linux 使用vim命令编辑文件内容
在终端可以使用vim命令来直接编辑文件内容. vim,也可以叫做vi. vim有三种模式:命令模式.输入模式.底线命令模式. 命令模式 vim 文件名 进入命令模式,vim也可以写成vi. 如果 ...
- linux按照更改时间查看文件,Linux查看特定时间段内修改过的文件
Linux查看特定时间段内修改过的文件 一.Linux系统日志的一些信息,日志配置文件syslog.conf 系统日志一般都存在/var/log下 常用的系统日志如下: 核心启动日志:/var/log ...
- Linux下文件内容更新了,文件夹时间戳却没变?
在日常多人协作时,最开始习惯看文件夹更新时间来查看是否有更新,但发现总是不能如实反映情况, 文件夹日期有时变,有时不变.很是困惑,就来探究下. Desk with stationary. Studio ...
- linux 搜索 文件 内容,Linux 文件查找及文件内容查找
使用grep搜索文件内容--快捷.方便 (1) 在当前目录下的所有文件的文件内容中查找哪个文件的内容中有findcontents(大小写不敏感,列出findcontents所在文件的所在行)--适合于 ...
- linux下qt浏览word文件内容,Qt获取office文件内容
Qt获取office文件内容 需要获取word文件的文件内容.网上找了好久,大部分都是excel的.而word的很少.所以在这里记录一下,方便大家查阅和自己使用. 使用的Qt版本是5.4.2 . 下面 ...
- linux 在指定行后写入文件内容,linux命令行下将指定的几行内容写入到一个文件中...
覆盖型写法 (文件里原来的内容被覆盖) echo "aaa" > a.txt echo aaa > a.txt 添加型写法 (新内容添加在原来内容的后面) echo & ...
- Linux显示文件目录分屏显示,Linux分屏显示文件内容-linux more命令详解-嗨客网
Linux分屏显示文件内容(more)教程 在使用 more 命令时,最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 Linu ...
最新文章
- Biztalk 2006 adapter的开发比2004容易的多
- uiautomatorviewer_【问题】解决Android8.0以上运行不了uiautomatorviewer的办法
- [No000011B]为什么有些程序员悄无声息渡过35岁中年危机?
- C++ Primer 5th笔记(7)chapter7 类:构造函数、类类型转换、聚合类
- 14.grafana导入导出;Grafana的安装和Influxdb数据源配置
- python数据挖掘学习笔记】十.Pandas、Matplotlib、PCA绘图实用代码补充
- caspase3是什么意思_caspase-3
- C++ 3D物理引擎库BulletPhysics基本使用
- 【DAY8】关于多线程的练习
- SQL按字段分组取最大(小)值记录(重复记录)
- session.setattribute 设置后取不到值_从入门到精通,别处学不到的污泥浓度计的使用和维护技巧...
- postgreSQL 自动递增序号
- springMVC入门二
- 猿辅导(实习800/天)面试算法题详解
- 报告下集 |《认文识字·中文字信息精准化》报告
- itext7实现参数和图片替换
- 【uniapp小程序】uploadFile文件上传
- 连分数与丢番图方程简介
- ASCII码表及键盘码表。
- 腾讯云人脸验证使用方法
热门文章
- css中设置background属性
- 1fichier.com-1TB免费FTP空间的使用
- c语言数值常量4.5e0,c语言数值常量表示方法问题
- ESP32 文件存储 spiffs
- python实现扫描二维码图片,返回相关信息
- Oracle定时任务dbms_job使用详解
- kdc服务器密码修改,kdc配置HA · ZHY ZONE
- RQ940服务器显示器不亮,稳定可靠 联想ThinkServer RQ940服务器
- cogs908. 校园网
- 【2018亚太数据中心峰会】林峰:中国游戏打破传统模式立足国际舞台