遵循:BY-SA

署名-相同方式共享 4.0协议

作者:谭东

时间:2016年10月31日

环境:Windows 7

有的时候会遇到这样的需求,例如直播时候,某段时间点了静音,你的音频录制数据就要是静音的。但是AudioRecorder还是有数据的,这时你就要自己处理这段时间的数据为静音的,没有音频流的音频。

其实就是你在静音这段时间不使用系统返回的音频data数据,而是写入空data数据即可,有时需要包含头文件。

这里以AAC音频流为例。下面这段就是在AAC裸流里写入了ADTS头文件后,写入了空数据数组,这样出来的AAC音频文件就是静音后的音频文件了。

    @Overridepublic void onFrameAvailable(Object o) {AudioBufFrame audioBufFrame = (AudioBufFrame) o;int outBufferSize = audioBufFrame.buf.limit() + 7;byte[] aacBytes = new byte[outBufferSize];try {if (!write) {fout = new FileOutputStream(MyConfiguration.VIDEO_PATH + "/audio.aac");write = true;}addADTStoPacket(aacBytes, outBufferSize);fout.write(aacBytes);} catch (IOException e) {e.printStackTrace();}}/*** 添加ADTS头** @param packet* @param packetLen*/private void addADTStoPacket(byte[] packet, int packetLen) {int profile = 2; // AAC LCint freqIdx = 4; // 44.1KHzint chanCfg = 2; // CPE// fill in ADTS datapacket[0] = (byte) 0xFF;packet[1] = (byte) 0xF9;packet[2] = (byte) (((profile - 1) << 6) + (freqIdx << 2) + (chanCfg >> 2));packet[3] = (byte) (((chanCfg & 3) << 6) + (packetLen >> 11));packet[4] = (byte) ((packetLen & 0x7FF) >> 3);packet[5] = (byte) (((packetLen & 7) << 5) + 0x1F);packet[6] = (byte) 0xFC;}

关于AAC头文件ADTS的文章和ByteBuffer的用法的文章看下面链接即可。

AAC的ADTS头文件信息介绍

ByteBuffer的用法

Android如何写一段空音频数据,静音数据相关推荐

  1. 【Android RTMP】RTMPDump 推流过程 ( 独立线程推流 | 创建推流器 | 初始化操作 | 设置推流地址 | 启用写出 | 连接 RTMP 服务器 | 发送 RTMP 数据包 )

    文章目录 安卓直播推流专栏博客总结 一. Java 层传入的 RTMP 推流地址处理 二. RTMPDump 推流线程 三. 创建 RTMP 对象 四. 初始化 RTMP 对象 五. 设置 RTMP ...

  2. 不写一段代码来获取扇贝单词的接口数据

    不写一段代码来获取扇贝单词的接口数据 第一步,登录并寻找可以爬取的数据(想直接看结论可以到第四步) 第二步,对症下药 第三步,解密接口 第四步,使用现成的方法获取数据 最近想做一个背单词相关的app, ...

  3. (3.1)【多媒体中的数据隐藏】数字音频中的数据隐藏、原理、音频隐写工具 S-TOOLS、提取工具MP3Stego

    目录 一.多媒体简介 1.1.流行: 1.2.隐患: 二. 数字音频中的数据隐藏 2.1.简介: 2.2.原理: 三.简单音频文件嵌入技术(不可感知的方法) 3.1.历史: 3.2.原理: 3.3.  ...

  4. Android如何连续播放多段短音频

    Android原生目录下android.media.MediaPlayer可以播放音频,也可以播放多段连续音频,但是效果不太理想,间隔很明显,MediaPlayer播放音频代码如下: public c ...

  5. 详细介绍Audition输出一个周期2khz的正弦波(循环)。将一段数字音频歌曲数据转换为模拟音频波形输出(循环)。

    详细介绍Audition输出一个周期2khz的正弦波(循环).将一段数字音频歌曲数据转换为模拟音频波形输出(循环) 序 言 1)STM32 的 DAC简介 2)DAC基本原理 2)DAC数字信号格式 ...

  6. Android视频编辑器(五)音频编解码、从视频中分离音频、音频混音、音频音量调节等

    前言 这篇博客,主要讲解的是android端的音频处理,在开发Android视频编辑器的时候,有一个非常重要的点就是音频的相关处理.比如如何从视频中分离音频(保存为mp3文件),然后分离出来的音频如何 ...

  7. android音视频【十】音频mp3剪切

    人间观察 为了等你,我错过了等我的人. 介绍 Android中在一些短视频的制作app软件上,会有给视频增加背景音乐的功能,而背景音乐/歌曲(一般是mp3)是从服务器上下载后,然后本地解码,往往用户会 ...

  8. Oracle查询数据表数据很少却很慢(查询空表很很耗时)

               昨天我在写代码的时候,有一个要的数据我要去看一下到底数据是什么样子的,所以我就 select   *   from  tableName  这个表.但是执行了90多秒后,没有任何 ...

  9. 【Android音视频开发】【032】Android从RTMP流中提取H264和AAC数据进行播放

    前篇 在上篇博客中,我们已经讲解过,如何从RTMP流中提取H264和AAC数据,并保存为FLV,AAC,H264等文件 这篇博客我们讲解,怎么通过Android多媒体框架播放这些数据 上篇博客的重点在 ...

最新文章

  1. golang之包和锁的机制
  2. Docker安装配置Nginx
  3. Boost:实现异步客户端
  4. 关于HTTP中40X和50X的问题(介绍,可根据介绍找出问题解决方案)
  5. cnn生成图像显著图_基于CNN与图像前背景分离的显著目标检测
  6. 发送和接收_通用异步接收器/发送器(UART)
  7. TCP/IP Model: Layers Protocol | What is TCP IP Stack?
  8. C++之临时对象、常引用和浅拷贝探究
  9. 实用 VSCODE 8类插件安利,提高开发效率
  10. 迎建国七十周年,Linux厂商巡礼之一铭软件
  11. 2019软科【世界一流计算机学科排名】公布!
  12. 看完牛客网19年测试全部面筋,有了这篇测试面试100问的博客
  13. 计算机百科丨芯片发展历经五次变革,下一个十年属于 AI
  14. 利用Arcgis Engine 二次开发的使用和总结
  15. 十进制负数转化成二进制
  16. 微信点赞功能测试用例,面试答题
  17. TX2安装ubuntu18,ROS
  18. 利用燃尽图跟踪迭代开发进展
  19. Spring Cloud入门 -- Ribbon服务消费者(Hoxton.SR5版)
  20. 《比尔总动员》1——20级变强攻略之胶囊制作

热门文章

  1. 【多线程】给三个字母a、l、i,采用多线程的方式打印alialialiali。。。
  2. 被Win11系统恶心到了
  3. 《走近ZStack Mini》第三期:智慧医疗场景演示
  4. Qt 界面上控制中英文显示切换
  5. 美国康奈尔大学计算机科学博士,康奈尔大学计算机科学博士申请要求有哪些
  6. Python输出斐波那契数列【递归、迭代】
  7. axure内联框架和动态面板_【Axure】动态面板的理解与下拉列表的联动
  8. vue 前端ui框架_vue前端框架
  9. 理解2PC,3PC与TCC
  10. 怎么将计算机的数据都备份到网络设置,如何备份电脑所有数据?三大方法教你搞定电脑数据备份...