alsa wav】的更多相关文章

wav_parser.h文件: //File : wav_parser.h //Author : Loon <sepnic@gmail.com> #ifndef __WAV_PARSER_H #define __WAV_PARSER_H typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; #if __BYTE_ORDER == __LITTLE_ENDIAN…
http://blog.csdn.net/azloong/article/details/6140824 这段时间在探索ALSA架构,从ALSA Core到ALSA Lib,再到Android Audio System.在看ALSA Lib时,写了一个比较典型的基于ALSA的播放录音程序.程序包包含四个部分: WAV Parser是对WAV文件的分析和封装,这里只针对Standard WAV File: SND Common是Playback 和Record共同操作,如SetParams.Rea…
本设计思路:先打开一个普通wav音频文件,从定义的文件头前面的44个字节中,取出文件头的定义消息,置于一个文件头的结构体中.然后打开alsa音频驱动,从文件头结构体取出采样精度,声道数,采样频率三个重要参数,利用alsa音频驱动的API设置好参数,最后打开wav文件,定位到数据区,把音频数据依次写到音频驱动中去,开始播放,当写入完成后,退出写入的循环. 注意:本设计需要alsa的libasound-dev的库,编译链接时需要连接 —lasound. #include<stdio.h>#incl…
#include<stdio.h> #include<stdlib.h> #include <string.h> #include <alsa/asoundlib.h> struct WAV_HEADER { char rld[4]; //riff 标志符号 int rLen; char wld[4]; //格式类型(wave) char fld[4]; //"fmt" int fLen; //sizeof(wave format mat…
在UBUNTU系统上使用alsa库完成了对外播放的wav文件的案例. 案例代码: /** *test.c * *注意:这个例子在Ubuntu 12.04.1环境下编译运行成功. * */ #include <stdio.h> #include <stdlib.h> #include <alsa/asoundlib.h> int main(int argc, char *argv[]) { int i; int ret; int buf[128]; unsigned in…
对于playback snd_pcm_begin snd_pcm_commit, 貌似 commit给的frame才会使得alsa去把数据填充 转自 http://magodo.github.io/ Zhaoting's Blog About ALSA - PCM接口 Apr 14, 2016 Table of Content 0. PCM 1. 概述 1.1 PCM设备的两种类型 1.2 PCM设备和ALSA应用的ring buffer 1.2.1 ring buffer - 单位(perio…
做linux音频编程对alsa应该不陌生. 但是对于刚接触这块技术的同学来说是一件困难的事情.原因在于:网上关于alsa的资料太少了,特别国内的资料更是大部分重复.对于初学者来说特别苦恼. 由于笔者经历过一步步摸索的痛苦过程,现在回想起来有些问题当初可以避免的.因此把问题解决方法和经验教训写出来,引以为戒. 写一系列的技术贴与网友们分享. 录音 arecord -D hw:2,0 -f S16_LE -r 44100 -c 2 /root/record.wav 查看音频设备命令arecord:加…
对于一个wave文件,如果需要播放,涉及到几个方面 1.对于wave文件的解析 2.通过解析wave文件,将得到的参数(主要是sampfrequency, bitsperSample,channel)通过alsa api设下去 3.正确找到data的起始点 4.play alsa 1.对于wave文件的解析,需要知道wave文件的格式 注意几点,标准的是44byte的头,但是有些情况下会有additional info, 占据2字节.头信息参见下图,也可以参考wave 文件解析 endian f…
如何分析tinyplay 播放音频和tinymix的过程?需要相应的工具来支持追查: 一.利用strace工具分析tinyplay和tinymix: strace -o tinyplay.log tinyplay 1.wav strace -o tinymixer.log tinymixer "SEC_MI2S_RX Audio Mixer MultiMedia1" 1 利用strace工具获取APP的log,从应用层往下看: 二.tinyplay调用分析(tinyplay.log搜索…
作品已经完成,先上源码: https://files.cnblogs.com/files/qzrzq1/WIFISpeaker.zip 全文包含三篇,这是第三篇,主要讲述接收端程序的原理和过程. 第一篇:基于Orangpi Zero和Linux ALSA实现WIFI无线音箱(一) 第二篇:基于Orangpi Zero和Linux ALSA实现WIFI无线音箱(二) 以下是正文: 在进行接收端程序开发前,首先要了解Orangpi Zero的声音设备. Orangpi可以通过ALSA(The Adv…
继上篇:Android : alsa-lib 移植 ,这篇随笔实现一个demo基于移植好的alsa库在Android平台上播放wav文件: 一.利用ffmeg将一个mp3文件转换成wav文件: (1)ubuntu安装ffmeg工具: sudo add-apt-repository ppa:djcj/hybrid sudo apt-get update sudo apt-get install ffmpeg (2)mp3转wav:   ffmpeg -i duandian.mp3 -f wav d…
如何分析tinyplay 播放音频和tinymix的过程?需要相应的工具来支持追查: 一.分析tinyplay和tinymix: 1.1 利用strace工具: strace -o tinyplay.log tinyplay 1.wav strace -o tinymixer.log tinymixer "SEC_MI2S_RX Audio Mixer MultiMedia1" 1 利用strace工具获取APP的log,从应用层往下看: 1.2 分析alsa-utils源码: tin…
linux中,无论是oss还是alsa体系,录音和放音的数据流必须分析清楚.先分析alsa驱动层,然后关联到alsa库层和应用层. 二,链接分析: 1)链路一 usr/src/linux-source-3.0.0/sound/core/pcm_native.c文件中注册部分.mmap = snd_pcm_mmap调用snd_pcm_mmap_data(substream, file, area); 该方法中进一步调用substream->ops->mmap(substream, area);…
今天要在linux下搞音频编程,在网上查阅了一下资料,网上很多资料都是在linux下直接对/dev/dsp进行编程的,因为在以往的linux系统中,我们是可以通过cat  xxx.wav /dev/dsp 来很容易的播放一个音频文件,在应用程序中,也可以直接操作/dev/dsp,实现声音的播放:打开->写入(实际上就能播放)->关闭. 然而在换成了ubuntu-12.04 LST后,我发现/dev中根本找不到dsp,之前直接操作/dev/dsp的程序都无法正常运行,而是 can't find …
原文出处:http://blog.sina.com.cn/s/blog_a04184c101010kry.html 警告:错误的EDID会造成HDMI发声异常 #title:box:HDMI Audio #author:wangsijie #:0,1 ------------------------------------------------------------------------------ 硬件环境 Nvidia(290)-----------------------------…
1.体验 (1)ALSA声卡使用体验:使用arecord录音,使用aplay播放,在Alsa-utils里面) 准备: cd linux-3.4.2 patch -p1 < ../linux-3.4.2_alsa_wm8976_uda1341_jz2440_mini2440_tq2440.patch  //打补丁 cp config_wm8976_jz2440 .config 或 cp config_uda1341_tq2440_mini2440 .config    //设置配置文件 make…
1.编译新的strace工具分析aplay和amixer应用程序对声卡的调用过程 (1)因为旧的strace工具不能识别不能识别alsa声卡驱动程序里面的ioctrl. (2)编译过程参考http://blog.csdn.net/qingkongyeyue/article/details/52228729 (3)出现错误 需要建立相关的设备节点 播放声音和调整音量 (4)等待音频播放完,能得到一个完整的log,把log文件拷贝回windows下进行分析 2.调用分析(aplay.log)(搜索设…
1 .配置内核支持UDA1341 (1)内核 解压内核并打上补丁 配置内核 platform 需要设置哪些配置项,先看一下platform,需要把S3c24xx-i2s.c文件配置上去,dma.c也要配置上去.这些文件对应哪一个配置项,可以通过打开内核目录中以上两个文件所在目录下的Makefile. 配置编译项CONFIG_SND_S3C24XX_I2S  // s3c24xx-i2s.c 搜索S3c24xx-i2s可知最终会编译进文件snd-soc-s3c24cc-i2s-objs这个文件里.…
1. Display Some PCM Types and Formats 2. Opening PCM Device and Setting Parameters /* This example opens the default PCM device, sets some parameters, and then displays the value of most of the hardware parameters. It does not perform any sound playb…
本文转载自:http://blog.csdn.net/luckywang1103/article/details/48053015 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   由于Android中默认并没有使用标准alsa,而是使用的是tinyalsa,所以就算基于命令行的测试也要使用libtinyalsa.Android系统在上层Audio千变万化的时候,可以能这些个工具实时查看到,比如音频通道的切换等等. 1.编译tinyalsa配套工具 $ mmm ex…
这里贴上虚拟机ubuntu下alsa的录音程序(capture.c)和播放程序(playback.c)的源码. 首先要测试一下自己的ubuntu是否打开了声音.这个可以打开/系统/首选项/声音  来调节.另外也可以在终端下输入alsaMixer 来调节,之前我的耳机就是只能放音不能录音,因为没有打开一些设置,在进入alsamixer界面后,按F4也就是capture选项,把声音调大就可以录音了.其中有两种模式测验,一种是使用fread和fwrite以读写文件的方式操作,把声卡里的采集到的fram…
(注意:内核上电的时候会把一些没运行的控制器模块的时钟都关掉,所有在写驱动的时候需要在使用的使用使用clk_get和clk_enable使能时钟) (说明:与ALSA声卡对应的是OSS架构,第二期视频中的声卡驱动就是指的OSS架构驱动,ALSA可以模拟OSS) (amixer controls执行后返回的可设置属性里面input mux表示录音的时候的通道,在mini2440和tq2440上两者不同,需要修改) 1.裸板WAV文件格式:http://blog.chinaunix.net/uid-…
前言 客户购买多台UNO-2184,使用fedora23系统进行视频监控,视频监控的同时,也要同步采集现场画面的声音,原来系统采用的是fedora 14,之前是通过操作/dev/bsp,对声卡进行操作,由于内核的升级不再支持此方式,新的内核开始使用alsa驱动方式,因此需要测试该功能,协助客户完成程序升级. 解决办法如下: 1.下载相关头文件的包,如果不下载编译程序会提示找不到asoundlib.h这个头文件 fedora 23下载 yum install alsa-lib-dev 其他系统可能…
ref : https://www.cnblogs.com/yutingliuyl/p/6718875.html https://blog.csdn.net/yuanxinfei920/article/details/52954941 背景: 平台: host平台 :Ubuntu 18.04 arm平台   : S5P6818 arm-gcc   :4.8.1   alsa-lib       :1.0.22 alsa-utils        :1.0.22 ALSA音频架构简单介绍 ALSA…
参考:https://www.alsa-project.org/alsa-doc/alsa-lib/_2test_2pcm_8c-example.html #include <stdio.h> #include <stdlib.h> #include <string.h> #include <getopt.h> #include <alsa/asoundlib.h> #include <unistd.h> typedef struct…
参考pcm_speex.c #include <stdio.h> #include <string.h> #include <unistd.h> #include <alsa/asoundlib.h> #include <alsa/pcm_external.h> struct ctx_parms { int frames; int enable_dump; FILE *dump_fp; float gain; }; typedef struct…
https://www.alsa-project.org/alsa-doc/alsa-lib/pcm_external_plugins.html External Plugin: I/O Plugin The I/O-type plugin is a PCM plugin to work as the input or output terminal point, i.e. as a user-space PCM driver. The new plugin is created via snd…
RTP标准是采用 UDP 发送,有不少现成的开源库,但不在本文讨论的范围内.UDP 用户数据报,不提供流程,安全传输的功能,但速度快,能提供多播,广播,没有序列号 SEQ ,有 MTU 限制,1500.TCP 传输控制协议,提供流控,SEQ ,重传功能,没有数据长度限制,可以发几 M . 但在使用中还是有很多地方需要注意,否则声音不好听,断断续续或是延时严重. 虽然 TCP 在使用上没有 MTU 限制,但是在真实的2个PC 之音使用 TCP 发送数据,也是被切片的,每次包不能超过 1448 字节…
采样率: samples 441100 每秒 DAC/ADC 采样的频率,声卡一般还支持 48k 8k 等模式. 通道:channels 2声道 左右声道 也有单声道的声音,5.1 声道 位数: 16bit 采样 DAC/ADC 深度 16bit 就是 65536 种声音层次 pcm 原始的 bit 流,如果是2声道 16bit,就是 左 16bit , 右 16bit 共 4个 Byte. 一个典型的 alsa 配置就按上面. 采样频率 支持音频带宽 输出码率 最低算法延迟 G711 8KHz…
在 ARM 2440 开发板上正常播放 16bit  44100 采样率的wav , 为了程序简单,没有判断返回值. 补充,在 ubunto 上也能正常播放. 编译方法: arm-linux-gcc -lasound wplay.c -o wplay  或在 ubuntu 上编译 gcc -lasound wplay.c -o wplay #include <stdio.h> #include <stdlib.h> #include <string.h> #includ…