以下为 ALSA-Project/FramesPeriods[1] 学习笔记

1, sample_rate: 即每秒进行多少次采样,常见的比如 8000、16000、44100和48000等

2, sample_bits: 即每次采样多少个bit,多是 16bit。其他常见有 24bits、32bits等

3, channels: 通道数,即单声道mono(1), 立体声stero(2), 1.2(3), 或是1.5(6)等

4, sample_format: 每次采样结果的表示格式, 主要区分bit位数和大小端, 如 S8、S16LE、S16BE、S24LE、S24BE、S32LE、S32BE等

5, period_size: 每次相邻中断之间处理的sample个数,处理完一个period,声卡硬件产生一个中断

period_count: 每次最大可提交的period的个数。

因为alsa内部使用ringbuffer,period_size * period_count 决定了ring_buffer的大小。

以上参数由音频输出硬件决定,同一个声卡可能挂接多个音频输出设备(比如HDMI、3.5寸耳机输出),其输出的音频参数规格各不相同。比如树莓配一代支持的音频输出规格如下

pi@raspberrypi:~ $ tinypcminfo -D 0 -d 0
Info for card 0, device 0: PCM out:
Access: 0x000009
Format[0]: 0x000006
Format[1]: 00000000
Format Name: U8, S16_LE
Subformat: 0x000001
Rate: min=8000Hz max=48000Hz
Channels: min=1 max=2
Sample bits: min=8 max=16
Period size: min=256 max=65536
Period count: min=1 max=128 PCM in:
cannot open device '/dev/snd/pcmC0D0c'
Device does not exist.
pi@raspberrypi:~ $ tinypcminfo -D 0 -d 1
Info for card 0, device 1: PCM out:
Access: 0x000009
Format[0]: 0x000004
Format[1]: 00000000
Format Name: S16_LE
Subformat: 0x000001
Rate: min=44100Hz max=48000Hz
Channels: min=2 max=2
Sample bits: min=16 max=16
Period size: min=256 max=16384
Period count: min=1 max=64 PCM in:
cannot open device '/dev/snd/pcmC0D1c'
Device does not exist.
pi@raspberrypi:~ $

因而应用再实现音频播放时,需要根据实际情况选择那个输出通道,并且根据其实际输出规格要求,提供对应的PCM数据。若原始直接的音频数据(比如解码输出),和所选的音频输出通道的规格要求不一致,则需要做转换处理

[1] https://www.alsa-project.org/main/index.php/FramesPeriods

alsa音频播放过程中的基本概念的更多相关文章

  1. C# 文本转语音,在语音播放过程中停止语音

    1,运用SpVoice播放语音 在VS2013创建Windows窗体应用程序项目,添加引用COM组件Microsoft Speech Object Library: using SpeechLib; ...

  2. Android 4.3实现类似iOS在音乐播放过程中如果有来电则音乐声音渐小铃声渐大的效果

    目前Android的实现是:有来电时,音乐声音直接停止,铃声直接直接使用设置的铃声音量进行铃声播放. Android 4.3实现类似iOS在音乐播放过程中如果有来电则音乐声音渐小铃声渐大的效果. 如果 ...

  3. opnet仿真过程中SEED的概念问题 分类: opnet 2014-11-02 15:25 69人阅读 评论(0) 收藏

    仿真配置中SEED的概念:仿真随机种子,是产生随机数的种子值,反应随机数的状态.只要选定一个种子值,整个随机事件系统就固定了,复杂仿真的随机过程就成了一次实现.目的是测试仿真系统的稳健性,具体来说,针 ...

  4. iOS音频采集过程中的音效实现

    1.背景 在移动直播中, 声音是主播和观众互动的重要途径之一, 为了丰富直播的内容,大家都会想要在声音上做一些文章, 在采集录音的基础上玩一些花样. 比如演唱类的直播间中, 主播伴随着背景音乐演唱. ...

  5. iOS开发系列--音频播放、录音、视频播放、拍照、视频录制

    --iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制, ...

  6. iOS开发----音频播放、录音、视频播放、拍照、视频录制

    随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操 ...

  7. 音频播放、录音、视频播放、拍照、视频录制-b

    随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操 ...

  8. IOS 音频播放

    iOS音频播放 (一):概述 前言 从事音乐相关的app开发也已经有一段时日了,在这过程中app的播放器几经修改我也因此对于iOS下的音频播放实现有了一定的研究.写这个系列的博客目的一方面希望能够抛砖 ...

  9. iOS音频播放(一):概述

    (本文转自码农人生) 前言 从事音乐相关的app开发也已经有一段时日了,在这过程中app的播放器几经修改,我也因此对于iOS下的音频播放实现有了一定的研究.写这个 系列的博客目的一方面希望能够抛砖引玉 ...

随机推荐

  1. Lapack求解线性方程组

    可参见这两个页面: 1. http://www.culatools.com/dense/lapack/ 2. http://www.netlib.org/lapack/lug/node1.html 根 ...

  2. learning makefile foreach

  3. 面向对象之反射 与__str__等内置函数

    一  反射 1.面向对象中的反射:通过字符串的形式操作对象的相关属性,python中一切事物都是属性(都可以使用反射) 四个可以实现自省<反射>的函数:hasattr /  getattr ...

  4. Android Studio修改apk打包生成名称

    在app的build.gradle文件的android{}括号里添加: android.applicationVariants.all { variant -> variant.outputs. ...

  5. python 常用网站

    https://www.tutorialgateway.org/python-tutorial/

  6. 14. Longest Common Prefix ★

    题目内容:Write a function to find the longest common prefix string amongst an array of strings 题目分析:本题目利 ...

  7. javascript20150124

    表达式与运算符 表达式 与数学中的定义相似,表达式是指具有一定的值的.用运算符把常数和变量连接起来的代数式.一个表达式可以只包含一个常数或一个变量.运算符可以是四则运算符.关系运算符.位运算符.逻辑运 ...

  8. 将float数据类型转换为str

    示例程序: #include <stdio.h> . . void UART_send_byte(char dat); void UART_send_string(unsigned cha ...

  9. jar 包启动脚本

    #!/bin/bash JAVA_HOME=/usr/java/default #java虚拟机启动参数 JAVA_OPTS="-server -Xms800m -Xmx800m -Xmn2 ...

  10. Excel修改证件照图片背景色

    在实际生活中,我们常常需要把白底证件照更改为蓝底或红底.操作步骤只需4步!   工具/原料   Excel 方法/步骤     第1步:插入白底证件照 单击[插入]---[图片],选择图片保存的位置, ...