Android录制语音文件wav转mp3的方法示例

1.Android 使用AudioRecord而实现录音暂停以及wav文件转mp3文件。因为android系统开源的原因,导致许多生产厂商乱改系统源码,此处小米最为恶心,使用android原生的AudioRecord录制只能保存wav和pcm格式的语音文件,但是小米手机录制的wav语音文件系统本身不支持,所以使用MediaPlayer不能播放wav格式的文件,其它手机可以。此时有一万匹草泥马从旁边疾驰而过。。。

2.针对这个问题解决方案目前有两种:

方案1: 将录制完的wav文件转化成mp3格式的,缺点:转码过程不能需要花费一部分时间,不能实时录制保存mp3格式的文件

此处可以借助gitHub上的第三方库来实现wav转mp3

gitHub地址: https://github.com/adrielcafe/AndroidAudioConverter

2.1初始化:

public class App extends Application {
  @Override
  public void onCreate() {
    super.onCreate();
    AndroidAudioConverter.load(this, new ILoadCallback() {
      @Override
      public void onSuccess() {
        // Great!
      }
      @Override
      public void onFailure(Exception error) {
        // FFmpeg is not supported by device
      }
    });
  }
}

2.2调用出调用,可以在录音完成的时候调用进行转码 转码过程需要一定的时候差不多1s能转化1M,10M的wav文件差不多花费10s时间转成mp3,转成mp3后文件缩小了10几倍

File flacFile = new File(Environment.getExternalStorageDirectory(), "my_audio.flac");
IConvertCallback callback = new IConvertCallback() {
  @Override
  public void onSuccess(File convertedFile) {
    // So fast? Love it!
  }
  @Override
  public void onFailure(Exception error) {
    // Oops! Something went wrong
  }
};
AndroidAudioConverter.with(this)
  // Your current audio file
  .setFile(flacFile) 

  // Your desired audio format
  .setFormat(AudioFormat.MP3)

  // An callback to know when conversion is finished
  .setCallback(callback)

  // Start conversion
  .convert();

2.3 gradle中的配置如下:

repositories {
 maven {
  url "https://jitpack.io"
 }
}

dependencies {
 compile 'com.github.adrielcafe:AndroidAudioConverter:0.0.8'
}

方案2:

格式的Recorder 通过 AudioRecord 或 MediaRecorder 录制的时候 直接录制成MP3 或 AAC 音频文件。

因 Android 默认不支持MP3编码,网上很多解决方案 比较成熟的方案就是使用Lame库,通过 Lame 编码生成 MP3 音频文件。

此处提供一个gitHub的库: https://github.com/lijunzz/Recorder-Android 这个比较新,而且还适配了as3.1,就是star数少了点,勉强可以用吧

之后遇到问题继续优化总结。。。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android编程实现播放MP3功能示例

    本文实例讲述了Android编程实现播放MP3功能.分享给大家供大家参考,具体如下: 在android中播放mp3非常简单,也是项目中经常使用的,比如说要做项目的背景音乐,应用中某些功能的提示音等的.应用非常广泛,下面提供一个简单的使用实例: layout文件的配置: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.and

  • 详解Android应用开发--MP3音乐播放器代码实现(一)

    需求1:将内存卡中的MP3音乐读取出来并显示到列表当中 1.从数据库中查询所有音乐数据,保存到List集合当中,List当中存放的是Mp3Info对象 2.迭代List集合,把每一个Mp3Info对象的所有属性,保存到Map对象当中 3.定义一个List集合,把Map对象添加到List集合当中 4.通过定义一个SimpleAdpter,调用setAdpter方法,将数据显示到列表当中 /** * 用于从数据库中查询歌曲的信息,保存在List当中 * * @return */ public Lis

  • Android录制mp3格式文件

    前言 最近做一个即时通信类的项目,由于要保证pc端,iOS端和Android端的通用性,最终统一为MP3格式,一直担心MP3格式会不会很大,但是实测还是可以接受的.下面来看看具体步骤: 工具 MP3格式是用一个开源项目转的,MP3lame,由于该项目用到了jni,所以需要大家配置好ndk环境,环境配置在此就不多说了,大家可以自行百度,最新的应该很好配置. 创建jni 拷贝文件 下载好后(我下载的是3.98.4版本)打开,找到libmp3lame文件,将里面的.h和.c拷贝下来,在自己的工程里创建

  • 利用libmp3lame实现在Android上录音MP3文件示例

    之前项目需要实现MP3的录音,于是使用上了Lame这个库.这次做一个demo,使用AndroidStudio+Cmake+NDK进行开发.利用Android SDK提供的AndroidRecorder进行录音,得到PCM数据,并使用jni调用Lame这个C库将PCM数据转换为MP3文件.并使用MediaPlayer对录音的MP3文件进行播放.另外此次的按键是仿微信的语音按键,按下录音,松开结束,若中途上滑松开即取消 效果如下: 项目地址: LameMp3ForAndroid_jb51.rar 一

  • 比较完整的android MP3 LRC歌词滚动高亮显示(附源码)

    1.以前的滚动只是安行来刷新,现在不是按行来滚动了,其实就是在一定时间内整体往上移动,比如说在1S内刷新10次,由于认得肉眼看起来像是滚动. 关键代码如下: 复制代码 代码如下: float plus = currentDunringTime == 0 ? 30                : 30                        + (((float) currentTime - (float) sentenctTime) / (float) currentDunringTim

  • Android递归方式删除某文件夹下的所有文件(.mp3文件等等)

    1.由于需要删除文件,因此需要如下权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> 2.核心代码 复制代码 代码如下: package com.example.deleteyoumi; import java.io.File; import android.os.Bundle; import android.os.Han

  • Android录音mp3格式实例详解

    Android录音支持的格式有amr.aac,但这两种音频格式在跨平台上表现并不好. MP3显然才是跨平台的最佳选择. 项目地址 GavinCT/AndroidMP3Recorder 实现思路概述 在分析代码前,我们需要明确几个问题 1. 如何最终生成MP3 实现MP3格式最好是借助Lame这个成熟的解决方案. 对于Android来说,需要借助JNI来调用Lame的C语言代码,实现音频格式的转化. 2. 如何获取最初的音频数据 AudioRecord类可以直接帮助我们获取音频数据. 3. 如何进

  • Android实现使用流媒体播放远程mp3文件的方法

    本文实例讲述了Android实现使用流媒体播放远程mp3文件的方法.分享给大家供大家参考,具体如下: package com.shadow.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.

  • Android录制语音文件wav转mp3的方法示例

    1.Android 使用AudioRecord而实现录音暂停以及wav文件转mp3文件.因为android系统开源的原因,导致许多生产厂商乱改系统源码,此处小米最为恶心,使用android原生的AudioRecord录制只能保存wav和pcm格式的语音文件,但是小米手机录制的wav语音文件系统本身不支持,所以使用MediaPlayer不能播放wav格式的文件,其它手机可以.此时有一万匹草泥马从旁边疾驰而过... 2.针对这个问题解决方案目前有两种: 方案1: 将录制完的wav文件转化成mp3格式

  • Android使用xml文件资源定义菜单实现方法示例

    本文实例讲述了Android使用xml文件资源定义菜单实现方法.分享给大家供大家参考,具体如下: 使用 XML 文件定义菜单 Android 提供了创建菜单的方式,一种是在 Java 代码中创建,一种是使用XML 文件定义.上面的实例都是 Java 创建菜单,在 Java 存在如下大学. 实现效果如下: 具体实现: 一.在 /res 下建立 /menu文件夹 二.在menu文件夹下建立:menu_main.xml: <?xml version="1.0" encoding=&qu

  • Android录制声音文件(音频)并播放

    本文实例为大家分享了Android录制音频文件的具体代码,供大家参考,具体内容如下 1.这个demo中没有对多次点击同一个声音文件做详细处理,偶尔会有崩溃,用的时候需要注意. 2.按住录音按钮录音过程中,只对竖直方向处理了一下,水平方向没写: 3.没有做删除某个声音文件的操作,但是测试的时候实现了功能,需要用到的话,在MainActivity->onItemClick中的TODO中有详细说明: 4.这只是个demo,如果要在项目中使用,先写出demo,没问题了,再引入项目,在写成demo后,在真

  • Android实现zip文件压缩及解压缩的方法

    本文实例讲述了Android实现zip文件压缩及解压缩的方法.分享给大家供大家参考.具体如下: DirTraversal.java如下: package com.once; import java.io.File; import java.util.ArrayList; import java.util.LinkedList; /** * 文件夹遍历 * @author once * */ public class DirTraversal { //no recursion public sta

  • Android实现把文件存放在SDCard的方法

    本文实例讲述了Android实现把文件存放在SDCard的方法.分享给大家供大家参考.具体如下: 使用Activity的openFileOutput()方法保存文件,文件是存放在手机空间上,一般手机的存储空间不是很大,存放些小文件还行,如果要存放像视频这样的大文件,是不可行的.对于像视频这样的大文件,我们可以把它存放在SDCard. SDCard是干什么的?你可以把它看作是移动硬盘或U盘. 在模拟器中使用SDCard,你需要先创建一张SDCard卡(当然不是真的SDCard,只是镜像文件).创建

  • Python基于pygame模块播放MP3的方法示例

    本文实例讲述了Python基于pygame模块播放MP3的方法.分享给大家供大家参考,具体如下: 安装pygame(可参考:安装Python和pygame及相应的环境变量配置) pip安装这个whl文件 装完就直接跑代码啦,很短的 import time import pygame file=r'C:\Users\chan\Desktop\Adele - All I Ask.mp3' pygame.mixer.init() print("播放音乐1") track = pygame.m

  • Android编程实现保存图片到系统图库的方法示例

    本文实例讲述了Android编程实现保存图片到系统图库的方法.分享给大家供大家参考,具体如下: 最近有些用户反映保存图片之后在系统图库找不到保存的图片,遂决定彻底查看并解决下. Adnroid中保存图片的方法可能有如下两种: 第一种是自己写方法,如下代码: public static File saveImage(Bitmap bmp) { File appDir = new File(Environment.getExternalStorageDirectory(), "Boohee"

  • Android编程简单解析JSON格式数据的方法示例

    本文实例讲述了Android编程简单解析JSON格式数据的方法.分享给大家供大家参考,具体如下: 比起XML,JSON主要优势在于它的体积更小,在网络上传输的时候可以更省流量.但缺点在于,它的语义性较差,显示不如XML直观. JSON格式 : { "name_A" : "value_A","name_B" : "value_B" } 表示: name_A = value_A; name_B = value_B; 我将对下面的J

  • Android编程实现通知栏进度条效果的方法示例

    本文实例讲述了Android编程实现通知栏进度条效果的方法.分享给大家供大家参考,具体如下: /** * 通知管理工具类 * * @description: * @author ldm * @date 2016-5-3 上午9:39:56 */ public class NotificationUtil { private Context mContext; // NotificationManager : 是状态栏通知的管理类,负责发通知.清楚通知等. private Notification

  • Python实现计算文件MD5和SHA1的方法示例

    本文实例讲述了Python实现计算文件MD5和SHA1的方法.分享给大家供大家参考,具体如下: 不多说,直接源码: #file md5 import sys; import hashlib; import os.path; def GetFileMd5(strFile): file = None; bRet = False; strMd5 = ""; strSha1 = ""; try: file = open(strFile, "rb"); m

随机推荐