Java 获取amr音频格式的音频长度


import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;

public class GetAmrDuration {

/**
* 得到amr的时长
*
* @param file
* @return
* @throws IOException
*/
public static int getAmrDuration(File file) throws IOException {
long duration = -1;
int[] packedSize = { 12, 13, 15, 17, 19, 20, 26, 31, 5, 0, 0, 0, 0, 0,
0, 0 };
RandomAccessFile randomAccessFile = null;
try {
randomAccessFile = new RandomAccessFile(file, "rw");
long length = file.length();// 文件的长度
int pos = 6;// 设置初始位置
int frameCount = 0;// 初始帧数
int packedPos = -1;

byte[] datas = new byte[1];// 初始数据值
while (pos <= length) {
randomAccessFile.seek(pos);
if (randomAccessFile.read(datas, 0, 1) != 1) {
duration = length > 0 ? ((length - 6) / 650) : 0;
break;
}
packedPos = (datas[0] >> 3) & 0x0F;
pos += packedSize[packedPos] + 1;
frameCount++;
}

duration += frameCount * 20;// 帧数*20
} finally {
if (randomAccessFile != null) {
randomAccessFile.close();
}
}
return (int)((duration/1000)+1);
}

public static void main(String[] args) throws IOException {
File source = new File("6.amr");
System.out.println(getAmrDuration(source));
}

}

Java 获取amr音频格式的音频长度,布布扣,bubuko.com

时间: 2024-10-12 09:20:33

Java 获取amr音频格式的音频长度的相关文章

java获取各类容器和数组的长度

java获取各类容器和数组的长度 没什么别的,查缺补漏而已 数组:length属性 ArrayList:size()方法 HashMap:size()方法 HashSet:size()方法 再加一个,字符串String:length()方法 原文地址:https://www.cnblogs.com/jiading/p/12369481.html

iOS音频技术的研究-音频格式

**什么是音频格式** 这个问题我也是查了很久才弄明白的.音频格式其实是指容器的类型,在通俗一点就是声音文件的类型,比如说"我爱你中国.mp3",这个声音文件的音频格式就是MP3. 这里稍微引入一些音频编码的东西.很多第一次涉及这个领域的(比如说我哈),很容易弄不清音频格式和音频编码的区别和联系,比如音频格式中有MP3格式,音频编码中有MP3编码,这时候多数人就不明白了. 音频编码本质是一种算法,我们拿到声音的原始数据之后,总不能直接就放到文件中用,我们需要根据不同的用途对于这些数据进

RDP协议集、音频输出、音频输入重定向虚拟通道

一.RDP协议集及子协议之间如何交互 由于目前Windows Server的版本已经进入到了2016版,因此在本文中,终端服务一律称为其最新名称:远程桌面服务(RDS). 以下组件对于了解远程桌面服务协议至关重要: RDP客户端:支持远程桌面服务协议的客户端称为RDP客户端,因为客户端安装了支持远程处理的软件组件.使用此RDP客户端,用户连接到RD会话主机服务器以登录到远程桌面计算机或远程应用程序. 远程桌面会话主机(RD会话主机):RDP客户端与之通信的服务器称为远程桌面会话主机(RD会话主机

AAC音频格式分析

关于AAC音频格式基本情况,可参考维基百科http://en.wikipedia.org/wiki/Advanced_Audio_Coding AAC音频格式分析 AAC音频格式有ADIF和ADTS: ADIF:Audio Data Interchange Format 音频数据交换格式.这种格式的特征是可以确定的找到这个音频数据的开始,不需进行在音频数据流中间开始的解码,即它的解码必须在明确定义的开始处进行.故这种格式常用在磁盘文件中. ADTS:Audio Data Transport St

Java利用读写的方式实现音频播放

public static void main(String[] args) { Audiotest at = new Audiotest("我在测试时,这里必须是盘符的音频文件"); at.start(); } import java.io.File; import java.io.IOException; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; impo

MIDI音频格式解析

由于网上关于MIDI音频格式的实例解析较少, 而本人这段时间刚好有做相关的应用, 所以,特别分享MIDI的解析实例, 希望对大家有所帮助. 1 0x4D , 0x54 , 0x68 , 0x64 , // "MThd" 2 0x00 , 0x00 , 0x00 , 0x06 , // 头块长度:不包括前4字节和本4字节 3 0x00 , 0x01 , // 格式:1-多轨,同步 4 0x00 , 0x03 , // 轨道数 = 3 5 0x01 , 0xE0 , // 基本时间格式 0

iOS 音频格式转换--caf转mp3

一般为了实现 iPhone 与 Android 实现音频互通. 那么MP3格式的音频文件是一个比较好的选择,当然除此之外Amr是一个最好的选择:Amr音频文件10秒大概就5K大小. 我们这里用一个第三方的框架——lame,把caf,pcm转化成MP3格式 好废话不多说现在开始进入正题 那么在转换之前呢? 就需要先录制好音频文件,使用 AVAudioRecorder 进行音频录制之前,进行如下参数设置: //注意如果是采用WebURL就不能采用AVAudioPlayer只能采用AVPlayer这点

C#将科大讯飞语音合成文件转换为MULAW音频格式

任务描述:通过科大讯飞语音合成组件在线完成文本转语音的合成,然后再转换为电话系统IVR要求的音频格式: wave mu-law 16位 8kHZ 64kbps. 完成步骤: 首先,我们要先通过科大讯飞语音合成组件实现文本合成,由于科大讯飞提供的接口都是C语言的,如果用C#调用需要做二次封装,为了快速完成任务,我们直接在科大讯飞论坛中找到一个现成组件进行修改,感谢wangkang提供的分享. 1.下载C#代码:http://bbs.xfyun.cn/forum.php?mod=viewthread

用JavaScript检测音频格式支持

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>用JavaScript检测音频格式支持</title> <script type=&q