使用AudioTrack播放PCM音频数据(android)

众所周知,Android的MediaPlayer包含了Audio和video的播放功能,在Android的界面上,Music和Video两个应用程序都是调用MediaPlayer实现的。MediaPlayer在底层是基于OpenCore(PacketVideo)的库实现的,为了构建一个MediaPlayer程序,上层还包含了进程间通讯等内容,这种进程间通讯的基础是Android基本库中的Binder机制。但是该类只能对完整的音频文件进行操作,而不能直接对纯PCM音频数据操作。假如我们通过解码得到PCM数据源,又当如何将它们播放?没错,就是用AudioTrack这个类(MediaPlayer内部也是调用该类进行真正的播放音频流操作)下面这个DEMO演示了如何使用AudioTrack来播放PCM音频数据

废话不多说,先上效果图:

工程代码结构也较为简单:

简单说下思路,先把PCM音频数据从指定的路径文件读到内存,然后给AudioPlayer设置数据源,音频参数等,最后执行播放,暂停,停止等操作

贴上部分类代码片段:

AudioPlayer代码片段如下:

下面来剖析以下如何使用AudioTrack来播放PCM音频数据

首先要构建一个AudioTrack对象:(需要采样率,声道,采样精度参数)

然后开一个子线程从缓存区里分块取数据然后写入硬件设备进行播放

AudioTrack里有三个重要方法:

void play()

int write(byte[] audioData, int offsetInBytes, int sizeInBytes) (该方法是阻塞的)

void stop()

从前面那个线程代码可以看出,我们在写数据之前需要先执行 play(),然后才能进行write操作,当数据播放完毕或是线程被外部终止的时候最后调用stop()停止写数据;若执行了play操作但后面却没有执行write操作的话,或是write操作结束后没有调用stop,观察logcat会不断打印提示信息,这是提示我们对以上三个方法的调用要规范

只要大家设置的音频参数和音频数据都是正确的,就能顺畅的播放出声音,本例已经附带了用于测试的音频文件以及参数说明(已测试通过),具体看工程里音频数据这个文件夹下的readme.txt即可.网上有些童鞋反应说audiotrack播放音频不顺畅,如果数据源没问题的话估计是他们的demo里没有连续地执行write操作而导致的,其它的不多说了,觉得有用的童鞋自己写代码看吧。。。喜欢就顶一下吧!

代码链接如下:

http://download.csdn.net/detail/geniuseoe2012/4378393

本文着重介绍audiotrack的使用,关于其底层原理,且看这位仁兄的文章:

http://www.cnblogs.com/innost/archive/2011/01/09/1931457.html

android 播放pcm的软件,应用AudioTrack播放PCM音频数据(android)相关推荐

  1. ios收费android免费,这款软件可以免费播放全网所有会员收费视频,支持安卓和IOS版本...

    原标题:这款软件可以免费播放全网所有会员收费视频,支持安卓和IOS版本 今天精华君就来给大家分享一款视频工具,同时拥有安卓和IOS版本,资源超级多还特别清晰的那种. 「麻花影视」,应该有一部分的小伙伴 ...

  2. Android开发p图软件,媲美大神P图效果 Android软件抠图神手

    媲美大神P图效果 Android软件抠图神手 2013年02月20日 01:50作者:杨霏霏编辑:杨霏霏文章出处:泡泡网原创 分享 泡泡网手机频道2月20日 PS的功能大家耳熟能详,其中抠图便是各位P ...

  3. 【Android工具】更新手机视频流媒体客户端播放器OPlayer

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 之前分享的"安卓魔力播放器moliplayer绿色无广告(2.8.10.83 ...

  4. Android编程中利用AudioTrack播放PCM数据在音频的最后出现重复回声现象的解决方案

    1 问题描述 今天在进行Android编程时遇到一个很奇怪的问题  重点说一下 这里我的测试机用的是"小米Note"  的确不怎么样 我在"华为P8"上面测试就 ...

  5. Android 音视频开发(一) -- 使用AudioRecord 录制PCM(录音);AudioTrack播放音频

    前言,音视频这块,确实比较难入门,本着学习的态度,我这边也跟着 Android 音视频开发入门指南 打怪升级,留下个脚印,大家共勉. 音视频 系列文章 Android 音视频开发(一) – 使用Aud ...

  6. Android AudioTrack播放PCM文件

    上篇文章写了使用AudioRecord采集音频,为了测试采集音频是否正确,可以通过AudioTrack播放音频试下. AudioTrack只能播放PCM格式的文件.PCM全称是Pulse Code M ...

  7. [Android] [音视频系列]在 Android 平台使用 AudioRecord 和 AudioTrack API 完成音频 PCM 数据的采集和播放,并实现读写音频 wav 文件

    参考 官方文档地址:https://developer.android.google.cn/reference/android/media/AudioRecord GitHub 地址:https:// ...

  8. Android 音视频开发(一):PCM 格式音频的播放与采集

    什么是 PCM 格式 声音从模拟信号转化为数字信号的技术,经过采样.量化.编码三个过程将模拟信号数字化. 采样 顾名思义,对模拟信号采集样本,该过程是从时间上对信号进行数字化,例如每秒采集 44100 ...

  9. Android开发之PCM音频流采集| 音频流录制与PCM音频流播放的实现方法

    在android中如果需要录制PCM流需要用到AudioRecord这个类,然后播放的话需要用AudioTrack 先看下效果图: 好了我们先看下如何录制PCM,看下核心代码 try {//输出流Ou ...

  10. AudioTrack 播放PCM音频数据

    AudioTrack 可以用来播放PCM数据,上一篇博客我讲了AudioRecord可以录制PCM数据 AudioTrack实例可以在两种模式下运行:静态或流式传输. 在Streaming模式下,应用 ...

最新文章

  1. java操作samba_使用Java和Samba JCIFS访问文件
  2. 如何实现tm同时监控多个状态的改变_广电机房监控系统【斯必得智慧机房】
  3. PyCharm----快捷键
  4. php mk的支持扩展,Linux部署Redis及PHP-redis扩展
  5. python解释器的使用
  6. myeclipse中hibernate出错
  7. python科学计算库-Scipy,主要讲解优化,方程求解,积分,蒙特卡洛,插值计算
  8. 多元统计分析朱建平pdf_应用多元统计分析课后答案朱建平版
  9. 远程下载pdf文件 java代码
  10. linux给普通用户添加管理员权限,linux 赋予普通用户管理员权限
  11. 计算机修复开机按什么,电脑蓝屏修复按哪个健?
  12. Cypress初探(一)
  13. 蓝桥杯2019年第十届国赛真题-大胖子走迷宫
  14. ModuleNotFoundError: No module named ‘kombu.five‘
  15. 文档服务器备份策略,服务器备份策略
  16. 辐射骚扰测试软件,电磁兼容EMC测试
  17. 如何用电脑录制一个教学视频
  18. 交通强国+新基建:各地政府布局智能交通是“政治任务”,亦有内在需求
  19. 中国天眼发现地外文明可疑信号,马斯克称星舰7月开始轨道试飞,网信办:APP不得强制要求用户同意处理个人信息,今日更多大新闻在此...
  20. Scala 系列(二)—— 基本数据类型和运算符

热门文章

  1. php 图片裁剪后保存,php – 如何保存裁剪的图像
  2. wincc提示项目管理器服务器不可用,Wincc新建文件时提示项目管理器 服务器不可用...
  3. 怎么推广“外卖CPS项目”赚佣金?(饿了么美团外卖红包小程序搭建教程)
  4. 全面的在线教育直播平台是怎样的呢?
  5. 网关报错:com.netflix.zuul.exception.ZuulException: Filter threw Exception,调用服务和网关陷入死循环,重复报相同的错误
  6. deepface:最先进轻量级人脸识别和人脸属性分析框架讲解
  7. MVC 原理和框架图
  8. linux 怎么批量删除文件,linux下批量删除文件
  9. Webgl-超级基础随笔2-矩阵与绘制Cude
  10. 怎样更改itunes备份位置_妙招更改iTunes备份地址释放C盘空间