Android如何写一段空音频数据,静音数据
遵循: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如何写一段空音频数据,静音数据相关推荐
- 【Android RTMP】RTMPDump 推流过程 ( 独立线程推流 | 创建推流器 | 初始化操作 | 设置推流地址 | 启用写出 | 连接 RTMP 服务器 | 发送 RTMP 数据包 )
文章目录 安卓直播推流专栏博客总结 一. Java 层传入的 RTMP 推流地址处理 二. RTMPDump 推流线程 三. 创建 RTMP 对象 四. 初始化 RTMP 对象 五. 设置 RTMP ...
- 不写一段代码来获取扇贝单词的接口数据
不写一段代码来获取扇贝单词的接口数据 第一步,登录并寻找可以爬取的数据(想直接看结论可以到第四步) 第二步,对症下药 第三步,解密接口 第四步,使用现成的方法获取数据 最近想做一个背单词相关的app, ...
- (3.1)【多媒体中的数据隐藏】数字音频中的数据隐藏、原理、音频隐写工具 S-TOOLS、提取工具MP3Stego
目录 一.多媒体简介 1.1.流行: 1.2.隐患: 二. 数字音频中的数据隐藏 2.1.简介: 2.2.原理: 三.简单音频文件嵌入技术(不可感知的方法) 3.1.历史: 3.2.原理: 3.3. ...
- Android如何连续播放多段短音频
Android原生目录下android.media.MediaPlayer可以播放音频,也可以播放多段连续音频,但是效果不太理想,间隔很明显,MediaPlayer播放音频代码如下: public c ...
- 详细介绍Audition输出一个周期2khz的正弦波(循环)。将一段数字音频歌曲数据转换为模拟音频波形输出(循环)。
详细介绍Audition输出一个周期2khz的正弦波(循环).将一段数字音频歌曲数据转换为模拟音频波形输出(循环) 序 言 1)STM32 的 DAC简介 2)DAC基本原理 2)DAC数字信号格式 ...
- Android视频编辑器(五)音频编解码、从视频中分离音频、音频混音、音频音量调节等
前言 这篇博客,主要讲解的是android端的音频处理,在开发Android视频编辑器的时候,有一个非常重要的点就是音频的相关处理.比如如何从视频中分离音频(保存为mp3文件),然后分离出来的音频如何 ...
- android音视频【十】音频mp3剪切
人间观察 为了等你,我错过了等我的人. 介绍 Android中在一些短视频的制作app软件上,会有给视频增加背景音乐的功能,而背景音乐/歌曲(一般是mp3)是从服务器上下载后,然后本地解码,往往用户会 ...
- Oracle查询数据表数据很少却很慢(查询空表很很耗时)
昨天我在写代码的时候,有一个要的数据我要去看一下到底数据是什么样子的,所以我就 select * from tableName 这个表.但是执行了90多秒后,没有任何 ...
- 【Android音视频开发】【032】Android从RTMP流中提取H264和AAC数据进行播放
前篇 在上篇博客中,我们已经讲解过,如何从RTMP流中提取H264和AAC数据,并保存为FLV,AAC,H264等文件 这篇博客我们讲解,怎么通过Android多媒体框架播放这些数据 上篇博客的重点在 ...
最新文章
- golang之包和锁的机制
- Docker安装配置Nginx
- Boost:实现异步客户端
- 关于HTTP中40X和50X的问题(介绍,可根据介绍找出问题解决方案)
- cnn生成图像显著图_基于CNN与图像前背景分离的显著目标检测
- 发送和接收_通用异步接收器/发送器(UART)
- TCP/IP Model: Layers Protocol | What is TCP IP Stack?
- C++之临时对象、常引用和浅拷贝探究
- 实用 VSCODE 8类插件安利,提高开发效率
- 迎建国七十周年,Linux厂商巡礼之一铭软件
- 2019软科【世界一流计算机学科排名】公布!
- 看完牛客网19年测试全部面筋,有了这篇测试面试100问的博客
- 计算机百科丨芯片发展历经五次变革,下一个十年属于 AI
- 利用Arcgis Engine 二次开发的使用和总结
- 十进制负数转化成二进制
- 微信点赞功能测试用例,面试答题
- TX2安装ubuntu18,ROS
- 利用燃尽图跟踪迭代开发进展
- Spring Cloud入门 -- Ribbon服务消费者(Hoxton.SR5版)
- 《比尔总动员》1——20级变强攻略之胶囊制作
热门文章
- 【多线程】给三个字母a、l、i,采用多线程的方式打印alialialiali。。。
- 被Win11系统恶心到了
- 《走近ZStack Mini》第三期:智慧医疗场景演示
- Qt 界面上控制中英文显示切换
- 美国康奈尔大学计算机科学博士,康奈尔大学计算机科学博士申请要求有哪些
- Python输出斐波那契数列【递归、迭代】
- axure内联框架和动态面板_【Axure】动态面板的理解与下拉列表的联动
- vue 前端ui框架_vue前端框架
- 理解2PC,3PC与TCC
- 怎么将计算机的数据都备份到网络设置,如何备份电脑所有数据?三大方法教你搞定电脑数据备份...