
由于avi当中压缩的种类繁多,JMF不能胜任,最好调用系统的DLL(系统的解码器)来读取
最简单的一个方法通过jacob调用WINDOWS的ActiveMovie control type library来读取。
另外,通过JNI+fmpeg、JFmpeg等,也可以
AudioCLip主要的方法有:play()播放依次声音;loop()循环播放音乐;stop()停止播放。做法一:InputStreamis=null;AudioStreamas=null;is=getClass()getResourceAsStream("awav");try{as=newAudioStream(is);}catch(IOExceptione){}AudioPlayerplayerstart(as);此方法将音乐文件放入流中在播放,仅限于JavaApplication,容易报错,空指针异常,或者是流异常,不推荐。做法二:Stringmusic="awav";AudioClipclip=AppletnewAudioClip(getClass()getResource(music));次方法在Applet中运行没有问题,但是Application中getclass()会返回空指针,导致失败。推荐做法:privateURLurl;privateAudioClipac;Filef1=newFile("C:/3wav");try{url=f1toURL();}catch(MalformedURLExceptione){//TODOAuto-generatedcatchblockeprintStackTrace();}ac=AppletnewAudioClip(cb1);acplay();
以随机读写方式打开一个MP3文件
将文件指针偏移量移动到文件长度倒数128位
判断标签头"TAG"是否存在
读取TAG_V1中的各个内容
关闭文件
TAG_V1(长度是固定的)其中包括的信息有:
标签头"TAG" 3字节
标题 30字节
作者 30字节
专辑 30字节
出品年份 4字节
备注信息 28字节
保留 1字节
音轨 1字节
类型 1字节
读
入一个MP3文件的TAG_V1部分信息:
byte buf = new byte[128];//初始化标签信息的byte数组
RandomAccessFile raf = new RandomAccessFile(mp3, "r");//随机读写方式打开MP3文件
rafseek(raflength() - 128);//移动到文件MP3末尾
rafread(buf);//读取标签信息
rafclose();//关闭文件
if(buflength != 128){//数据长度是否合法
throw new Exception("MP3标签信息数据长度不合法!");
}
if(!"TAG"equalsIgnoreCase(new String(buf,0,3))){//标签头是否存在
throw new Exception("MP3标签信息数据格式不正确!");
}
获得TAG_V1中的各个内容:
String SongName = new String(buf,3,30,"utf-8")trim();//歌曲名称
String Artist = new String(buf,33,30,"utf-8")trim();//歌手名字
String Album = new String(buf,63,30,"utf-8")trim();//专辑名称
String Year = new String(buf,93,4,"utf-8")trim();//出品年份
String Comment = new String(buf,97,28,"utf-8")trim();//备注信息
以上就是关于JAVA中怎么获取avi音频文件的播放时间长度。使用什么类要什么JAR包吗全部的内容,包括:JAVA中怎么获取avi音频文件的播放时间长度。使用什么类要什么JAR包吗、java js前端请求后台去获得音频流,然后播放音乐,音乐可以控制进度,显示总时长、java 怎么读取音乐文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)