美文网首页
4.Android音频驱动(底层1)

4.Android音频驱动(底层1)

作者: wit_yuan | 来源:发表于2018-05-05 22:54 被阅读0次

1.介绍

Android使用的音频驱动库是tinyalsa,所以后面的说明都是基于驱动程序与tinyalsa的。

2.编译

编译出tinyalsa应用程序

$ mmm external/tinyalsa/
$ cp out/target/product/tiny4412/symbols/system/bin/tiny*  /mnt/hgfs/Desktop/

生成的文件在out/target/product/tiny4412/symbols/system/bin/目录下。

然后可以将生成的文件拷贝到SD卡中:

$ ls /mnt/media_rw/sd_external/images/              
Android
FriendlyARM.ini
Linux
Superboot4412.bin
UbuntuCore
tinycap
tinymix
tinypcminfo
tinyplay

在Android系统中,如果出现:

mkdir failed for share, Read-only file system

解决办法为:

$ su
$ mount -o remount  /system

之后,就可以将文件拷贝到Android中了。

$ mkdir /share
$ cp /mnt/media_rw/sd_external/images/tiny* /share
$ cd /share
$ ./tinyplay                                             
Usage: ./tinyplay file.wav [-D card] [-d device] [-p period_size] [-n n_periods]

要注意,使用tinyplay的时候,最好查看一下要播放的文件的格式,我是用过cooledit制作音频文件,发现是不符合tinyplay格式要求的。
需要注意的是如下内容:

音频文件格式

按照红色划分,主要是根据分析tinyplay.c源码分析出来的。

可以看到数据组织格式为:

数据 意义 备注
0x0001 audio_format 音频格式
0x0002 num_channels 左右2个声道
0x0000ac44 sample_rate 采样速率为44100
0x0002b110 byte_rate 176400
0x0004 block_align 4
0x0010 bits_per_sample 16bit

tinyplay是支持16bits per sample,2声道。我在cooledit上报错主要原因是这里不正确。

播放、录制音频

$ ./tinyplay 1.wav                                       
Playing sample: 2 ch, 44100 hz, 16 bit

$ ./tinycap 2.wav                                        
Capturing sample: 2 ch, 44100 hz, 16 bit
^CCaptured 241664 frames

经过验证,在Tiny4412开发板上,播放与录制音频都能成功。

相关文章

  • 4.Android音频驱动(底层1)

    1.介绍 Android使用的音频驱动库是tinyalsa,所以后面的说明都是基于驱动程序与tinyalsa的。 ...

  • 日常

    系统架构:1.linux内核层(为设备各种硬件提供底层驱动,如显示驱动,音频驱动,蓝牙驱动等) ...

  • 第一章--android知识简介

    android系统架构 Linux内核层为android提供了各种底层的驱动,如显示驱动,音频驱动,照相机驱动,蓝...

  • 第一行代码-Android(第二版)笔记

    Android 系统构架 Linux kernel(内核)为Android 设备提供底层的驱动,如显示驱动,音频驱...

  • Android系统架构

    Android系统架构 Linux内核层为Android设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、相机...

  • 《第一行代码:Android》读书笔记——第1章 Android

    (一)Android系统架构 Linux内核层:各种底层驱动,如显示驱动、音频驱动、电源管理等。 系统运行库层:各...

  • AudioUnit使用

    在iOS上Audio Unit是比较底层的接口,可以理解为其是对音频硬件驱动的封装。用来进行低延迟的音频采集和播放...

  • openal

    openAL是模仿openGL的播放音频的接口,底层由声卡驱动提供实现; openAL分为三种设备:Native、...

  • Linux驱动模块编译

    Linux 对大多数的驱动作了分类:块设备驱动、网络驱动、I 2 C 驱动、USB 驱动、SPI 驱动、音频驱动等...

  • Linux设备驱动概述

    1.设备驱动的作用 对设备驱动最通俗的解释就是“驱使硬件设备行动”。驱动与底层硬件直接打交道,按照硬件设备的具体工...

网友评论

      本文标题:4.Android音频驱动(底层1)

      本文链接:https://www.haomeiwen.com/subject/crysrftx.html