码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • [Android][音频] 关于AudioTrack libaudioclient libaaudio


    前言:

    概述的官方文档见:

    https://source.android.com/docs/core/audio?hl=zh-cnicon-default.png?t=N7T8https://source.android.com/docs/core/audio?hl=zh-cn

    audio 的playback可以分为四条路线:

    1)java 路线,Java.AudioTrack->JNI.AudioTrack->libaudioclient(native).AudioTrack 。

    2)c/c++ ndk 路线,libaaudio.AAudio->libaudioclient(native).AudioTrack 。

    3)3rd party lib 路线,opensles , 详见:

            OpenSL ES Overview - The Khronos Group IncOpenSL ES™ is a royalty-free, cross-platform, hardware-accelerated audio API tuned for embedded systems. It provides a standardized, high-performance, low-latency method to access audio functionality for developers of native applications on embedded mobile multimedia devices, enabling straightforward cross-platform deployment of hardware and software audio capabilities, reducing implementation effort, and promoting the market for advanced audioicon-default.png?t=N7T8https://www.khronos.org/opensles/https://developer.android.com/ndk/guides/audio/opensl?hl=zh-cnicon-default.png?t=N7T8https://developer.android.com/ndk/guides/audio/opensl?hl=zh-cn4)3rd party lib 路线,google oboe ,oboe 是 google 较新的一个独立于 aosp 的工程,它对 opsles和libaaudio.AAudio 进行了统一封装,会首先尝试使用 AAudio ,如果走不通则使用opensles 。

    https://developer.android.com/ndk/guides/audio/opensl?hl=zh-cnicon-default.png?t=N7T8https://developer.android.com/ndk/guides/audio/opensl?hl=zh-cn

    四个相关的模块:

    libaaudio                       /frameworks/av/media/libaaudio                       

    libaudioclient                 /frameworks/av/media/libaudioclient                 

    libaudiohal                    /frameworks/av/media/libaudiohal                   

    libaudioprocessing        /frameworks/av/media/libaudioprocessing        

    Java路线

    java路线使用起来较为方便,但是如果不适用透传模式(编码的pcm直接传到AudioTrack里解码)的话,则可能会需要通过反射来使用 AudioTrack 的 write 函数。这种情况一般是使用 MediaCodec 做解码,如果是 java.MediaCodec 则不需要反射,如果是 native.MediaCodec 则需要反射。

    JAVA-AudioTrack:

    \frameworks\base\media\java\android\media\AudioTrack.java

    JNI-AudioTrack:

    /frameworks/base/core/jni/android_media_AudioTrack.h

    /frameworks/base/core/jni/android_media_AudioTrack.cpp

    libaudioclient(native)-AudioTrack:

    /frameworks/av/media/libaudioclient

    libaudioclient 提供了 JAVA - JNI 封装,没有提供 ndk 封装。

    c/c++ ndk路线

    android 没有提供 native AudioTrack 的 ndk ,但是提供了另外一个 ndk AAudio , AAudio 对 AudioTrack 进行了封装,因此可以把 AAudio 当作 AudioTrack 的 ndk 来使用。

    libaaudio:

    /frameworks/av/media/libaaudio

    ndk : include/aaudio/AAudio.h

    参考:https://developer.android.com/ndk/guides/audio/aaudio/aaudio?hl=zh-cnicon-default.png?t=N7T8https://developer.android.com/ndk/guides/audio/aaudio/aaudio?hl=zh-cn

    opensles

    略

    google oboe

    略

    参考:

    https://source.android.com/docs/core/audio/implement?hl=zh-cn

    https://developer.android.com/reference/android/media/AudioTrack

    Android Audio: Play a WAV file on an AudioTrack « Mind The Robot

  • 相关阅读:
    牛客网《剑指offer》专栏刷题练习之数组专精
    ElasticSearch虚拟机安装(单机版)
    现代 PHP 新特性 —— 内置的 HTTP 服务器
    Redis主从集群
    C++ BFS相关题目
    2022-09-09 mysql列存储引擎-POC-需求分析-第二版-有问题的SQL
    记:lora及lorawan的一些概念话
    读书笔记: 这就是搜索引擎
    [云] 大数据分析栈(Big Data Analytics Stack)+ Apache Hadoop分布式文件系统(HDFS)+Apache Spark
    机器学习理论之(13):感知机 Perceptron;多层感知机(神经网络)
  • 原文地址:https://blog.csdn.net/ykun089/article/details/132894861
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号