android实现之高清音频录制编码

Android音频基础与录制播放 采样率表示在1秒内对声音的模拟信号采样的次数,假设上面是声音在1秒内的模拟信号,那么采样就只有2次,以频率作为计量单位,所以这里采样率2Hz。由此 ,可以看出采样率越高,采样得到的数字信号数据就越多,声音在播放过程就会越真实越接近原声,但这也占用很大的数据存储。在存储和传输过程,通常使用PCM格式,虽然无损以及可以直接被声卡和DAC解析,但存储大小过大,会造成本地和网络资源的浪费。,根据奈奎斯特·香农采样定理,采样后的音频要还原成人耳可以识别声音,采样率需要为人耳可以识别频率的2倍,而人耳上限是。 阅读详情

场景说明:

在现在有安卓手机中AudioRecord录制出的音频是通过扬声器或表克风录制出来的。对于外录即扬声器录制的视频而言,音质十分渣。对于想要录制现场的声音如开会时,两人对话时声音证据保存的声音录制,完全不能满足需求。鉴于此,研究安卓平台下高清音频录制的解决方案。


原理:本人实现原理很简单,分为两部分:1, 原始音频采集,2 音频编码 。


1,原始音频采集:

还是通过安卓的API AudioRecord 去采集声音,这个API录制声音不行,但在安卓上采集音频通常只能通过这个API,因为它直接封装了底层audio_device设备。

想要自己另外实现一套采集手段,不大实现且费力。我们可以通过设定一定的音频采样率,通道类型,码率,缓冲区大小来初始化AudioRecord,让它来为我们

采集原始音频,即 PCM 格式音频。


2 , 音频转码:

采集到PCM音频后,将PCM格式转码为MP3格式音频。这里我用的是LAME编码器,它是一款出色的音频编码器,摘自网上的一段介绍,LAME(mitiok.ma.cx)编码出来的MP3音色纯厚、空间宽广、低音清晰、细节表现良好,它独创的心理音响模型技术保证了CD音频还原的真实性。也不知是真是假。呵呵,反正本人用的还不错,保留了MP3音频的高清质量。


具体实现步骤:

1,音频采集:

    这里使用设定的采样率,码率,缓冲区大小初始化AudioRecord

    并且设制处理音频的间隔时间及回调监听。

/**
     * Initialize audio recorder
     */
    private void initAudioRecorder() throws IOException {
        int bytesPerFrame = audioFormat.getBytesPerFrame();
        /* Get number of samples. Calculate the buffer size (round up to the
           factor of given frame size) */
        int frameSize = AudioRecord.getMinBufferSize(samplingRate,
                channelConfig, audioFormat.getAudioFormat()) / bytesPerFrame;
        if (frameSize % FRAME_COUNT != 0) {
            frameSize = frameSize + (FRAME_COUNT - frameSize % FRAME_COUNT);
            Log.d(TAG, "Frame size: " + frameSize);
        }
        
        

从PCM到WAV:深入解析Android音频录制编码转换与实战陷阱 本文深入解析Android平台使用AudioRecord进行音频录制时,从PCM原始数据到WAV格式的编码转换过程。详细探讨了AudioRecord的核心配置、PCM数据高效采集、WAV文件头精密构造等关键技术,并揭示了转换过程中的性能优化、内存管理及机型兼容性等实战陷阱与解决方案。 阅读详情

相关推荐

Android摄像头采集编码H264及H264解码播放

包含两个Demo,一个是H264TestCameraSaveH264工程,运行可以开启摄像头录制编码H264文件,输出为SD卡中encoder.h264;另一个是testService工程,读取SD下的encoder.h264解码为RGB绘图播放。附加一个encoder.h264文件。

android音频杂音问题_Android 音视频去回声、降噪(Android音频采集及回音消除)(转)...

好久没写文章了,其实是想记录一下自己在Android开发的成长历程。谈到音视频这块,对于新手来说刚接触到这一块,那是非常非常的恶心~我自己弄这一块也是从头开始,在 网上也翻阅了无数的资料、浏览了无数的博客,尝试了多种方法,网上大致方法是采用第三方的,如webRtc、speex等。甚至花钱买积分去下demo,也发现了好多demo就是 骗积分的,呵呵~好气~ 谈了。成长的过程也是比较艰辛的,最...

weixin_39976166的博客 3203

Android G.711音频编解码

Android G.711音频编解码,Jni调用G.711源码,实现音频的编解码。

Android MediaRecorder录制模糊的解决办法

依照网上的demo,自写的应用录制15秒的视频只有200K左右的大小,打开一看就很模糊。影响了视频的后续处理(我们需要对视频后期提取颜色或动作变化的波形)。需要提高视频的录制质量。 解决办法: 网上流传比较广的一种办法是 法一:设置CamcorderProfile //代码源自网络 /***********原来的写法************/ mMediaReco...

熊仙森滴Blog 6365

MediaRecorder的几个常见坑

一、问题代码private void initRecord() throws IOException { mMediaRecorder = new MediaRecorder(); mMediaRecorder.reset(); if (mCamera != null) mMediaRecorder.setCamera(mCam

GitLqr的博客 3万+

Android手机音频采样率,手机音质差?提升音质必备App了解下

在很多人的印象中,手机的音质水平并高。特别是大多数的安卓机,抛却硬件说,软件方面也存在一些音频输出的缺陷,例如播放音频时容易发生SRC等等。过就算是普通手机,也是可以通过一些APP来提升音质的。手机上有一些值得一试的HiFi APP,一起来看看吧。海贝音乐前面提到,使用安卓手机听歌,很大概率会遇到音频SRC问题,这是由于安卓系统完善造成的。SRC的全称为“Sample Rate Conve...

weixin_29311017的博客 1万+

Android 4.4KitKat AudioRecord 流程分析

  Android是架构分为三层: 底层Linux Kernel 中间层主要由C++实现Android 60%源码都是C++实现) 应用层主要由JAVA开发的应用程序   应用程序执行过程大致如下: JAVA应用程序产生操作(播放音乐或停止),然后通过JNI调用进入中间层执行C++代码,中间层处理后可能需要硬件产生动作的,会继续将操作传到Linux Kern...

weixin_30375427的博客 470

scrcpy:颠覆性Android屏幕录制与控制的智能解决方案

想要在电脑上完美录制Android设备屏幕吗?scrcpy录制功能为你提供了专业级的屏幕录制体验。这款开源工具仅能将手机屏幕实时显示在电脑上,更提供了高质量的录制能力,无论是游戏直播、应用演示还是在线会议,都能轻松应对。通过设备端编码和时间戳同步技术,scrcpy确保录制内容质量最佳且音视频完全同步,彻底告别传统录屏软件的卡顿和同步问题。 ## 为什么选择scrcpy录制?三大核心优势解析

gitblog_00298的博客 678

手机录屏App高清画质码率可调文件小

还能指定只录屏幕的某个区域,用每次都全屏录制。手机录屏听起来简单,但实际用起来坑少:要么录出来糊成一团,要么文件大到手机装下,要么录完都知道存哪去了。想要画面清晰就多给点码率,想要文件小就调低一点,自己平衡清晰度和文件大小之间的关系。同场景选同模式,覆盖得很全面。在免费录屏工具里,能把清晰度、轻量化、功能全这三点同时做好的,目前就它一个。第一次用的话,软件里有个简短教程,看完基本就知道怎么操作了。

weixin_62784879的博客 320

小爱音箱接入 ChatGPT 与豆包:用 MiGPT 打造专属大模型语音助手

晚上睡前想喊一句"明天早上八点叫我起床",或者让音箱讲个故事,原来的小爱同学多半只能回你一句"抱歉,我还在学习中"。装上 MiGPT 之后,这台小爱音箱背后接上了真正的大模型,问什么答什么,还能记住之前聊过的内容。这篇文章按"它是什么 → 怎么部署 → 卡住了怎么办 → 怎么调教"的顺序,把整套流程走一遍。 ## 🧩 MiGPT 到底做了什么:原理三句话说清 它本质上是个"中间人":一边通过

gitblog_01063的博客 434

Android设备录制终极指南:用scrcpy实现专业级屏幕录制

还在为Android设备录制烦恼吗?想想拥有一款既免费又强大的录制工具?今天我要向你介绍的scrcpy,就是这样一个能够满足你所有录制需求的完美解决方案!🎯 ## 为什么scrcpy是录制的首选? 你可能用过很多录制工具,但scrcpy的独特之处在于: - **录制质量超高**:直接在设备端进行编码,视频和音频质量得到充分保证 - **同步效果完美**:基于设备时间戳,网络延迟完全影响

gitblog_01010的博客 896

scrcpy录制终极指南:如何高效录制Android设备屏幕和音频

想要将Android设备的操作过程完美记录下来?无论是游戏直播、应用演示还是教学视频,scrcpy的录制功能都能帮你轻松搞定!这款开源神器仅能实时显示手机屏幕,还提供了专业级的录制能力,让你获得高质量的音视频内容。作为Android设备镜像和控制的强大工具,scrcpy录制功能通过设备端编码和时间戳同步技术,确保录制内容质量最佳且音视频完全同步。 ## 为什么选择scrcpy进行Android

gitblog_00908的博客 401

G711:音频G711格式编解码

音频G711格式编解码 1、media文件夹存放的是audacity音频分析工具,与我们要解码的源G711文件; 2、src文件夹是源代码目录; 3、整个工程比较简单,用Clion打开CMakeLists.txt,然后重新编译即可。 说明:代码实例是G711—U模式,A模式的实例可参考下面代码。 /* * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual prope

G722音频编解码

将g722音频编解码封装成dll,用户可以利用其中的.h,.lib直接应用到自己的程序中,而且该接口已经过测试,应用到程序中。

android屏幕 录制检测,Android 录制屏幕的实现方法

Android 录制屏幕的实现方法,长久以来,我一直希望能够直接从Android屏幕上进行录制并将其编码为多种格式,以便将录制内容嵌入在任意位置,而需要安装任何软件。如今,我们已经接近这个目标。Chrome团队正在添加一种功能,可以通过getUserMedia从Android设备上共享屏幕。我创建了一个原型来录制屏幕并将录制内容流式传输到其他设备,以便将其录制到文件并为其添加设备帧。虽然WebR...

weixin_33781129的博客 2829

Escrcpy高清录制教程:4K画质Android屏幕录像终极指南

想要录制Android设备的高清屏幕视频吗?Escrcpy是基于Scrcpy的图形化Android设备控制工具,支持4K画质的屏幕录制功能。本教程将详细介绍如何使用Escrcpy进行高质量屏幕录制,从基础设置到高级参数调优,帮助您轻松制作专业级的Android屏幕录像。🎯 ## 为什么选择Escrcpy进行高清录制? Escrcpy提供了完整的Android设备控制解决方案,其高清录制功能具

gitblog_00461的博客 874

MediaRecorder 介绍和使用,结合Camera2录制视频实例(含完整项目)

在中通过设定的宽高去修改view的宽高。@Override} else {} else {可以将相机的一些基础操作和实现都封装起来,并在CameraSurfaceView中完成相关操作。完整文件地址:// 封装相机的各种操作// 设置屏幕常亮@Override@Override// 将View的大小修改为和相机预览分辨率相同的比例@Override。

阿飞的博客 8026

android 屏幕录制方案,Android录制屏幕的实现方法

原文:Paul Kinlan翻译:Agora.io长久以来,我一直希望能够直接从Android屏幕上进行录制并将其编码为多种格式,以便将录制内容嵌入在任意位置,而需要安装任何软件。如今,我们已经接近这个目标。Chrome团队正在添加一种功能,可以通过getUserMedia从Android设备上共享屏幕。我创建了一个原型来录制屏幕并将录制内容流式传输到其他设备,以便将其录制到文件并为其添加设备帧...

weixin_32958777的博客 1167
上一篇: webrtc 后台搭建步骤及原理
下一篇: Activity的正确打开方式
战码天下
博客等级 码龄16年 11粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值