我使用audioRecord类录制音频。现在我想将音频原始文件转换为* flac格式。我转换*原始文件为WAV下一方式:如何在Android中将音频原始转换为FLAC

private void copyWaveFile(String inFilename,String outFilename){

FileInputStream in = null;

FileOutputStream out = null;

long totalAudioLen = 0;

long totalDataLen = totalAudioLen + 36;

long longSampleRate = sampleRate;

int channels = 2;

long byteRate = RECORDER_BPP * sampleRate * channels/8;

byte[] data_pcm = new byte[mAudioBufferSize];

try {

in = new FileInputStream(inFilename);

out = new FileOutputStream(outFilename);

totalAudioLen = in.getChannel().size();

totalDataLen = totalAudioLen + 36;

Log.i(TAG,"File size: " + totalDataLen);

WriteWaveFileHeader(out, totalAudioLen, totalDataLen,

longSampleRate, channels, byteRate);

while(in.read(data_pcm) != -1){

out.write(data_pcm);

}

in.close();

out.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

这段代码是负责文件头

private void WriteWaveFileHeader(

FileOutputStream out, long totalAudioLen,

long totalDataLen, long longSampleRate, int channels,

long byteRate) throws IOException {

byte[] header = new byte[44];

header[0] = 'R'; // RIFF/WAVE header

header[1] = 'I';

header[2] = 'F';

header[3] = 'F';

header[4] = (byte) (totalDataLen & 0xff);

header[5] = (byte) ((totalDataLen >> 8) & 0xff);

header[6] = (byte) ((totalDataLen >> 16) & 0xff);

header[7] = (byte) ((totalDataLen >> 24) & 0xff);

header[8] = 'W';

header[9] = 'A';

header[10] = 'V';

header[11] = 'E';

header[12] = 'f'; // 'fmt ' chunk

header[13] = 'm';

header[14] = 't';

header[15] = ' ';

header[16] = 16; // 4 bytes: size of 'fmt ' chunk

header[17] = 0;

header[18] = 0;

header[19] = 0;

header[20] = 1; // format = 1

header[21] = 0;

header[22] = (byte) channels;

header[23] = 0;

header[24] = (byte) (longSampleRate & 0xff);

header[25] = (byte) ((longSampleRate >> 8) & 0xff);

header[26] = (byte) ((longSampleRate >> 16) & 0xff);

header[27] = (byte) ((longSampleRate >> 24) & 0xff);

header[28] = (byte) (byteRate & 0xff);

header[29] = (byte) ((byteRate >> 8) & 0xff);

header[30] = (byte) ((byteRate >> 16) & 0xff);

header[31] = (byte) ((byteRate >> 24) & 0xff);

header[32] = (byte) (2 * 16/8); // block align

header[33] = 0;

header[34] = RECORDER_BPP; // bits per sample

header[35] = 0;

header[36] = 'd';

header[37] = 'a';

header[38] = 't';

header[39] = 'a';

header[40] = (byte) (totalAudioLen & 0xff);

header[41] = (byte) ((totalAudioLen >> 8) & 0xff);

header[42] = (byte) ((totalAudioLen >> 16) & 0xff);

header[43] = (byte) ((totalAudioLen >> 24) & 0xff);

out.write(header, 0, 44);

}

我不明白什么应该是* FLAC文件的参数

+0

hello用户,如果你能够将原始文件转换为flac,那么请分享你的方式,以便我可以帮助自己。我从1周内陷入这个问题。一点帮助,将不胜感激。 –

2014-07-19 11:30:58

android 4.4 flac,如何在Android中将音频原始转换为FLAC相关推荐

  1. 如何在Java中将字节数组转换为InputStream和OutputStream

    您是否坚持使用编码,因为您有字节数组,并且链中的下一个方法需要InputStream? 不用担心Java有解决方案,您可以使用 ByteArrayInputStream 在Java中将字节数组转换为I ...

  2. 如何在Java中将GIF图像转换为PNG等图像格式?试试Aspose

    通常,GIF图像用于描述动画.动画GIF是按特定顺序组合在一起的帧的集合.但是,在某些情况下,必须将GIF图像转换为其他光栅图像格式.对于这种情况,本文演示了如何使用Java将GIF图像转换为PNG, ...

  3. 对象数组转成字符串数组 java_如何在Java中将对象数组转换为字符串数组

    如何在Java中将对象数组转换为字符串数组 我使用以下代码将Object数组转换为String数组: Object Object_Array[]=new Object[100]; // ... get ...

  4. 用 python 脚本,把当前目录及子目录下的 wav 音频文件转换为 flac 格式

    用 python 脚本,把当前目录及子目录下的 wav 音频文件转换为 flac 格式 import os, subprocessfor d,sd,files in os.walk('.'):for ...

  5. android 禁用通知栏_如何在Android上禁用通知

    android 禁用通知栏 Notifications are great, and Android's notification system is arguably the best out th ...

  6. 阻止android应用调用_如何在Android上设置应用时间限制和阻止应用

    阻止android应用调用 Khamosh Pathak Khamosh Pathak Spending way too much time on your Android device? Use a ...

  7. android led闪烁功能,如何在Android应用层中制作一个LED指示灯效果

    如何在Android应用层中制作一个LED指示灯效果 发布时间:2020-12-08 16:12:59 来源:亿速云 阅读:86 作者:Leah 本篇文章给大家分享的是有关如何在Android应用层中 ...

  8. android 动态修改菜单,如何在Android的“选项”菜单上更改MenuItem?

    如何在Android的"选项"菜单上更改MenuItem? 我的Activity上有一个选项菜单,带有mymenu.xml"开始". 选择此3000128611 ...

  9. android打电话的intent,如何在Android中使用intent打电话?

    如何在Android中使用intent打电话? 我正在使用以下代码在Android中进行调用,但它给了我安全例外,请帮忙. posted_by = "111-333-222-4"; ...

最新文章

  1. 学好单片机能找什么工作?单片机好学吗?
  2. webstorm安装_WebStorm2019安装教程
  3. 最近使用的两个工具 winscp和xshell
  4. 《HTML5 Canvas开发详解》——导读
  5. 【Python】学习笔记总结8(经典算法)
  6. 2020-11-19
  7. 字母框如何影响UI内容的理解
  8. JPA技巧:避免N + 1选择问题
  9. c#重写了窗体的OnKeyDown事件,但是不执行
  10. 如何在 Quagga BGP 路由器中设置 IPv6 的 BGP 对等体和过滤
  11. js调用java_Js调用Java方法并互相传参的简单实例
  12. java设计模式-工厂系列
  13. 程序员如何学习一门新技术?
  14. 关于写专利的一点感想
  15. 方舟破解版自建服务器,方舟生存进化自建服务器教程
  16. 小学四则运算练习软件需求说明
  17. 手把手教你如何玩转EasyExcel的导入和导出
  18. pynq-z2 使用PL做流水灯
  19. 瞒不住了,Prefetch 就是一个大谎言
  20. 台式计算机网线接口松动怎么办,电脑网线接口附近时常有滋滋声是怎么回事

热门文章

  1. 华为设备链路聚合(LACP模式)
  2. 使用易语言实现远程CALL调用
  3. Metasploit(超详细)命令
  4. 顺序栈的实现和两栈共享空间
  5. java多线程(分分钟基础秒杀)
  6. 名编辑电子杂志大师教程 | 如何设置翻页电子样本在手机上的展示画质?
  7. CMMI 3.0究竟有哪些变化?
  8. “第四产业”升级,中软国际“蝶变”
  9. 贪心算法(Greedy Algorithms)
  10. FFMPEG监控拉流,向流媒体服务器推流