导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    【全志T113-S3_100ask】音频输入与输出

    MR Series
    3
    4
    2904
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • Y
      giao LV 6 最后由 编辑

      背景

      之前查看系统命令,发现有个aplay命令,然后尝试使用 aplay -Dhw:audiocodec -vvv gz.wav 播放音频,然后报错 aplay: pcm_write:2127: write error: Input/output error

      # aplay -Dhw:audiocodec  gz.wav
      Playing WAVE 'gz.wav' : [   46.786665] [SNDCODEC][sunxi_card_hw_params][620]:stream_flag: 0
      Signed 16 bit Little Endian, Rate 16000 Hz, Mono
      aplay: pcm_write:2127: write error: Input/output error
      

      然后就不会了。

      8月2日100ask出了简单的教程,是需要先使用tinymix 设置参数的,但是。-bash: tinymix: command not found

      我又不想再去编译安装 tinymix ,发现有个 amixer 命令,查阅资料成功配置,播放了音乐。

      (一)amixer 的使用

      1、查看用法

      # amixer -h
      Usage: amixer <options> [command]
      
      Available options:
        -h,--help       this help
        -c,--card N     select the card
        -D,--device N   select the device, default 'default'
        -d,--debug      debug mode
        -n,--nocheck    do not perform range checking
        -v,--version    print version of this program
        -q,--quiet      be quiet
        -i,--inactive   show also inactive controls
        -a,--abstract L select abstraction level (none or basic)
        -s,--stdin      Read and execute commands from stdin sequentially
        -R,--raw-volume Use the raw value (default)
        -M,--mapped-volume Use the mapped volume
      
      Available commands:
        scontrols       show all mixer simple controls
        scontents       show contents of all mixer simple controls (default command)
        sset sID P      set contents for one mixer simple control
        sget sID        get contents for one mixer simple control
        controls        show all controls for given card
        contents        show contents of all controls for given card
        cset cID P      set control contents for one control
        cget cID        get control contents for one control
      
      Available advanced commands:
        sevents         show the mixer events for simple controls
        events          show the mixer events for simple controls
      

      有点复杂看不懂。。。查阅资料。

      2、常用命令

      本节参考 https://blog.csdn.net/meirixuexi/article/details/71513007

      amixer controls 用于查看音频系统提供的操作接口
      amixer contents 用于查看接口配置参数
      amixer cget + 接口函数
      amixer cset + 接口函数 + 设置值
      

      解释:比如想要设置主音量,第一次使用的话先得查询一下接口函数的配置参数,但是又不知道接口叫什么,先查询所有接口

      # amixer controls
      numid=17,iface=MIXER,name='Headphone volume'
      numid=30,iface=MIXER,name='Headphone Switch'
      numid=12,iface=MIXER,name='FMINL gain volume'
      numid=13,iface=MIXER,name='FMINR gain volume'
      numid=2,iface=MIXER,name='ADC1 ADC2 swap'
      numid=24,iface=MIXER,name='ADC1 Input FMINL Switch'
      numid=25,iface=MIXER,name='ADC1 Input LINEINL Switch'
      numid=23,iface=MIXER,name='ADC1 Input MIC1 Boost Switch'
      numid=6,iface=MIXER,name='ADC1 volume'
      ...省略...
      

      找到了Headphone volume,意思是耳机音量,因为我们是使用3.5mm接口的,所以这一项和我们想要的很像。

      使用 amixer cget + 接口函数查询现在的参数,如:

      # amixer cget numid=17,iface=MIXER,name='Headphone volume'
      
      numid=17,iface=MIXER,name='Headphone volume'
        ; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
        : values=4
        | dBscale-min=-42.00dB,step=6.00dB,mute=0
      

      value = 4,最大值为7

      修改音量值为6:

      # amixer cset numid=17,iface=MIXER,name='Headphone volume' 6
      
      numid=17,iface=MIXER,name='Headphone volume'
        ; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
        : values=6
        | dBscale-min=-42.00dB,step=6.00dB,mute=0
      

      (二)amixer 设置音频输出参数

      经过查询,之所以出现 aplay: pcm_write:2127: write error: Input/output error 错误是因为没有输出设备。

      # amixer cget numid=30,iface=MIXER,name='Headphone Switch'
      
      numid=30,iface=MIXER,name='Headphone Switch'
        ; type=BOOLEAN,access=rw------,values=1
        : values=off
      

      耳机开关的输出是 off !!!

      将其开启:

      # amixer cset numid=30,iface=MIXER,name='Headphone Switch' on
      
      numid=30,iface=MIXER,name='Headphone Switch'
        ; type=BOOLEAN,access=rw------,values=1
        : values=on
      

      使用 aplay 可以从耳机输出音乐了!!

      (三)使用 aplay 播放音乐

      1、配置音频输出渠道:

      # amixer cset numid=30,iface=MIXER,name='Headphone Switch' on
      
      numid=30,iface=MIXER,name='Headphone Switch'
        ; type=BOOLEAN,access=rw------,values=1
        : values=on
      

      2、设置音量1:

      # amixer cset numid=17,iface=MIXER,name='Headphone volume' 6
      
      numid=17,iface=MIXER,name='Headphone volume'
        ; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
        : values=6
        | dBscale-min=-42.00dB,step=6.00dB,mute=0
      

      设置音量2:

      # amixer cset numid=5,iface=MIXER,name="PCM Volume" 170
      
      numid=5,iface=MIXER,name='DAC volume'
        ; type=INTEGER,access=rw---R--,values=2,min=0,max=255,step=0
        : values=170,170
        | dBscale-min=-119.25dB,step=0.75dB,mute=0
      

      3、播放音乐:

      # aplay -Dhw:audiocodec -vvv piao.wav
      
      Playing WAVE 'piao.wav' : [  228.205229] [SNDCODEC][sunxi_card_hw_params][620]:stream_flag: 0
      Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
      Hardware PCM card 0 'audiocodec' device 0 subdevice 0
      Its setup is:
        stream       : PLAYBACK
        access       : RW_INTERLEAVED
        format       : S16_LE
        subformat    : STD
      ...省略...
      

      实测:

      3bd5a2f03b5b4b3cb835dd8a7af85391.png

      (四)使用 arecord 录音

      配置音频输入渠道:

      amixer cset numid=29,iface=MIXER,name='ADC3 Input MIC3 Boost Switch' on
      amixer cset numid=31,iface=MIXER,name='HpSpeaker Switch' on
      

      录音

      arecord -Dhw:audiocodec -f S24_LE -r 16000 -c 1 -d 10 -vv ./in.wav
      

      解释:使用 设备audiocodec
      录制 格式为S24_LE
      输入比特率为16000
      通道1
      时间为10s
      保存在 ./in.wav
      更多内容\查看帮助 arecord -h

      实测:

      8b880533322f40d7a396b588da537fd6.png

      原文链接:https://blog.csdn.net/qq_46079439/article/details/126127325

      1 条回复 最后回复 回复 引用 分享 0
      • H
        huanian LV 4 最后由 xiaowenge 编辑

        很强👍 用芒果MQ-R接喇叭,播放能出声,但声音很小听个响,关键是开机后喇叭严重发烫

        H 1 条回复 最后回复 回复 引用 分享 0
        • H
          hydfxy LV 5 @huanian 最后由 编辑

          @huanian 请问下芒果mq-r怎么接喇叭,看了两排引脚没找到接喇叭的是哪两个口

          H 1 条回复 最后回复 回复 引用 分享 0
          • H
            huanian LV 4 @hydfxy 最后由 编辑

            @hydfxy 板上有两个触点: A+ A-

            1 条回复 最后回复 回复 引用 分享 0
            • 1 / 1
            • First post
              Last post

            Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

            行为准则 | 用户协议 | 隐私权政策