
我也是遇到这个问题,这是MCI的BUG,暂时应该无解,而且微软似乎没有打算修复这个问题,解决方法只能改用别的播放内核。MCI只有在获取可变码率的音频文件的长度时才会出现不准确的情况。能够过观察发现,MCI识别的长度误差满足下面的关系:MCI识别的长度/实际长度≈比特率/128。
1、添加MP3格式文件。打开软件后,点击初始界面左上方的“添加视频”按键,打开文件夹找到需要的mp3音乐并导入到软件上。有时浏览文件夹时没看到音乐文件,这时注意一下“打开”对话框下面的“文件类型”,可选是All Files(全部格式文件),或mp3格式。
2、点击“编辑”按钮。软件左上角的位置上的第二个按钮上,点击编辑按钮,然后就可以进到文件的编辑界面上,这是软件编辑文件的入口。
3、开始音频剪切编辑。点击主界面左上方的“视频编辑”按键即可进入编辑窗口。如图所示。可以手动在时间轴上用鼠标随意拖动左区间和右区间,两者之间的部分就是截取/剪切出来的音频了。如果需要精确的剪切,可以在“截取”项下面的菜单中,输入精确的开始时间和结束时间的数值。最后 “确定”保存并返回主界面。
4、然后再选择预置方案,即输出格式。单击“预置方案”右边的小倒三角,打开上拉菜单,根据需要选择音频格式,如果按原格式输出的话,就选择常见音频中的MP3-MPEG Layer-3 Audio (mp3) 流行的音频格式,具有很好的音质和很小的体积。
5、最后点击右下角的转换按钮,然后就可以在转换器的界面上看到转换完成后界面的提示,还可以直接点击打开目录按钮,直接找到编辑后的音乐文件。
这个问题你需要知道 matlab对音频文件的处理常用 *** 作;
matlab一般读取wav数据;
[data,fs,nbits] = wavread('testwav');---testwav文件名
则可知音频文件时长为
t = (length(data(:,1))/fs) (t单位:秒)
希望可以帮到你,有什么不懂的可以继续追问
MediaPlayer md = new MediaPlayer();
try {
LogUtilslog(EnvironmentgetExternalStorageDirectory() +"/123mp3");
mdsetDataSource(EnvironmentgetExternalStorageDirectory() +"/123mp3");
mdprepare();
LogUtilslog("size " + mdgetDuration());
} catch (Exception e) {
eprintStackTrace();
}
MediaPlayer 初始化 -> setDataSource->prepare-> 就可以获取到了getDuration() 单位是ms
你这个lenth变量不可能取得到值啊。
ValBack = mciSendString("status"+"song length", lenth,lenthLength, 0);
这一句你把lenth一个为""的值当作参数传给mciSendString,这是什么意思呢?
整个方法没有给lenth赋值的量,你再去取得它,它依然还是"",当然取不到了。
这个API函数不太常用,我帮你找了个详细的例子,你可以临摹一下。好好研究一下吧。
>
以上就是关于如何获取音频文件的准确时长,比如MP3全部的内容,包括:如何获取音频文件的准确时长,比如MP3、怎么获取一段mp3格式的音频的播放时长、如何利用matlab获取音频文件的时长等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)