MP3文件中没有关于该文件总的播放时间这个变量,因此,要通过一定的计算方法来计算出一个MP3文件的总的播放时间。MP3文件根据比特率是否变化可以分为VBR和CBR的文件,因此,对于这两种文件,计算总播放时间的方法也是不一样的。

1、CBR的MP3文件的计算方法

CBR,故名思议,Constant Bitrate,文件的比特率是固定的,也就是说每个帧的比特率也是固定的。因此,可以通过下面的公式来计算总的播放时间:

总播放时间 = 文件大小 * 8 / 比特率

(1)文件大小:文件大小是以字节为单位。一个MP3文件包括两个部分,一部分是帧数据,还有一部分就是tag,因此,这里的文件大小是指MP3文件的总大小减去tag的大小,即:

文件大小 = 文件总大小 - tag大小

其实,tag所占用的空间与整个MP3文件相比,微乎其微,几乎可以忽略不计。

(2)这里的8是指一个字节包含的比特位数。

(3)比特率:要获得比特率,首先要对MP3文件的第一个帧的Header进行解析,获得比特率的索引值,然后,查比特率索引表,即可得到比特率。

2、VBR的MP3文件的计算方法

VBR,Variable Bitrate,即文件的比特率是时刻在变化着的,每一帧的比特率是不一样的,所以要计算VBR的MP3文件的总播放时间就有点复杂。可以通过下面的公式来总的播放时间:

总播放时间 = 总帧数 * (帧的采样个数 * 1 / 采样率)

(1)总帧数:VBR的MP3文件有两种Header:XING和VBRI,这两个Header中包含了一些信息,其中就包括总帧数。每个VBR的MP3文件只包含一种Header。要判断一个MP3文件是CBR还是VBR就是根据文件是否包含这两种Header中的一种,如果包含XING或者VBRI,就是VBR文件,如果都没有,那就是CBR。这两种Header只会在VBR的MP3文件的第一帧中出现,这里对这两种Header不作介绍。

(2)采样率:首先要对MP3文件的第一个帧的帧头进行解析,获得采样率的索引值,然后,查采样率索引表,即可得到采样率。1 / 采样率:表示每个采样的时长。

(3)帧的采样个数:首先要对MP3文件的第一个帧的帧头进行解析,获得MPEG的版本,然后根据MPEG的采样数索引表查找到帧的采样个数。比如:MPEG1,LayerIII,对应的就是1152。帧的采样个数 * 1 / 采样率:表示一帧的时长。

MP3文件如何计算总播放时间相关推荐

  1. 使用go语言GUI库实现对mp3文件的播放1(简单的播放mp3文件)

    使用go语言GUI库实现对mp3文件的播放1(简单的播放mp3文件) 使用beep播放mp3文件(10num) 使用go语言GUI库fyne实现音乐播放器 要是想使用go语言实现播放mp3需要借助be ...

  2. 常用的视频格式文件WEB端播放代码

    1.avi格式 代码片断如下: <object id="video" width="400" height="200" border= ...

  3. 磁带转换成MP3 文件,摆脱复读机

    一.就是3.5接口的直录线,2元一根,接入声卡的Line IN口,另一端接入录音机的耳机口,用goldwave或Audition.exe录音,在音量属性中选录音选项,来源选Stereo 即立体声输入, ...

  4. js获取播放器播放时间和停止播放

    html代码 1 <video id="myVideo" class="video-active" width="100%" heig ...

  5. MPEG简介 + 如何计算 CBR/VBR MP3 的播放时间

    [此文目的]  1.  了解 MPEG相关知识  2.  了解 MP3 的常见术语含义  3.  详解 VBR MP3的帧头格式及含义  4.  搞懂如何去计算 CBR和 VBR的 MP3文件的播放时 ...

  6. MPEG简介 + 如何计算CBR 和VBR的MP3的播放时间

    1. 声明 本文所写内容,多数整理自互联网,版权归原作者所有 笔者知识有限,文中难免有误,欢迎批评指正,admin (at) crifan.com 觉得此文对你有帮助,想要发邮件来感谢的,也欢迎哈,^ ...

  7. Android 入门第九讲01-音频(本地音乐播放,暂停,继续播放,获取播放时间,快进到指定位置,变速播放,播放data/data/目录下的音频文件,播放网络歌曲)

    Android 入门第九讲01-音频(本地音乐播放,暂停,继续播放,获取播放时间,快进到指定位置,变速播放,播放data/data/目录下的音频文件,播放网络歌曲) 准备 1.储存在raw文件夹 2. ...

  8. JB的测试之旅-上传的mp3文件播放不了

    温馨提示:阅读时长约2分钟: 前言 公司是资讯类产品,因此后台采用了开源的编辑器供运营原创文章.上传图片.视频等,这不,运营上传完视频发布文章后,发现文章里面的音频播放不了: 而这,就是故事的开端: ...

  9. 【工具】音乐播放相关工具,音乐文件格式转换工具,MP3文件转换成arduino可以直接播放的wav格式,MP3转WAV工具...

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 最近玩播放音乐又用到了audio.online-convert这个音乐转换工具,好用, ...

最新文章

  1. Python将彩色图转换为灰度图
  2. Web纯前端“旭日图”实现元素周期表
  3. centos oracle命令,CentOS7命令行方式搭建Oracle11gR2
  4. pythonbool类型数组生成_Python Numpy:如何计算bool数组中真正元素的数量
  5. Arrays.asList()返回的ArrayList,这是Arrays里内嵌的一个私有静态类,而并不是java.util.ArrayList类
  6. 基于Nexys4 DDR的温度数码管实时显示
  7. Linux系统中添加硬盘,并挂载到已有的目录,比如/home/user
  8. centos7限制cpu使用_CentOS7 CPU隔离配置
  9. 大屏监控系统实战(13)-10分钟投票增量曲线制作(二)
  10. 数据结构与算法(八)-二叉树(斜二叉树、满二叉树、完全二叉树、线索二叉树)...
  11. 如何通过git客户端上传项目到github上
  12. windows phone 扫描二维码
  13. CSS 魔法系列:纯 CSS 绘制各种图形《系列六》
  14. 给兆芯出主意:开发一批新指令,交叉授权
  15. jeecms常见用法
  16. Python,折线图,手写数字,图像反色、二值化、28X28
  17. 会员注册与验证码demo 带注释(html、css、js)
  18. 全国青少年编程等级考试python一级真题2022年3月(含题库答题软件账号)
  19. java服务器常见状态码
  20. 华为自研系统鸿蒙为什么也要基于linux来开发?

热门文章

  1. 七夕哄女朋友神器——送她一束玫瑰花
  2. 【JY】建筑结构施加地震波的方法与理论机理
  3. 插件学习:metisMenu.min.js
  4. 老司机 iOS 周报 #30 | 2018-08-06
  5. 三体·Round - 智子(Easy Version)
  6. iconfont字体图标引用出现框框问题解决办法
  7. 网页html转word在线制作,【html转Word】- 虎课网
  8. win10无法枚举容器中的对象 访问被拒绝
  9. centos emqttd 笔记
  10. OSSEC安装与搭建