根据文件大小和属性计算音频时长,详解

可以根据一个 wav 文件的大小、采样频率和采样大小估算出一个 wav 文件的播放长度。

 

譬如 "Windows XP 启动.wav" 的文件长度是 424,644 字节, 它是 "22050HZ / 16bit / 立体声" 格式(这可以从其 "属性->摘要" 里看到),

那么它的每秒的传输速率(位速, 也叫比特率、取样率)是 22050*16*2 = 705600(bit/s), 换算成字节单位就是 705600/8 = 88200(字节/秒), 
播放时间:424644(总字节数) / 88200(每秒字节数) ≈ 4.8145578(秒)。

但是这还不够精确, 包装标准的 PCM 格式的 WAVE 文件(*.wav)中至少带有 42 个字节的头信息, 在计算播放时间时应该将其去掉, 
所以就有:(424644-42) / (22050*16*2/8) ≈ 4.8140816(秒). 这样就比较精确了.

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
计算属性是一种特殊的属性,它的值是通过计算而得到的,而不是直接存储在对象中。在访问计算属性时,会触发一个特定的方法来计算并返回属性的值。计算属性通常用于对其他属性进行处理或者根据某些条件动态计算属性的值。 计算属性可以拥有一个名为`get`的方法来定义属性的获取行为。这个方法会在访问该属性时自动调用,并返回计算得到的属性值。例如,假设有一个对象`person`,包含`firstName`和`lastName`两个属性,我们可以通过计算属性来获取完整的姓名: ```javascript const person = { firstName: 'John', lastName: 'Doe', get fullName() { return this.firstName + ' ' + this.lastName; } }; console.log(person.fullName); // 输出: John Doe ``` 在上面的例子中,`fullName`是一个计算属性,它通过拼接`firstName`和`lastName`来计算得到完整的姓名。 除了`get`方法外,计算属性还可以拥有一个名为`set`的方法来定义属性的设置行为。当对计算属性进行赋值时,`set`方法会被调用,并传入新的属性值作为参数。通过这个方法,我们可以对赋值操作进行一些处理或者更新其他相关的属性。例如: ```javascript const person = { firstName: 'John', lastName: 'Doe', get fullName() { return this.firstName + ' ' + this.lastName; }, set fullName(value) { const parts = value.split(' '); this.firstName = parts[0]; this.lastName = parts[1]; } }; person.fullName = 'Jane Smith'; console.log(person.firstName); // 输出: Jane console.log(person.lastName); // 输出: Smith ``` 在上面的例子中,我们通过`set`方法将一个字符串值分割为`firstName`和`lastName`,并分别进行赋值。 需要注意的是,计算属性只能通过`get`和`set`方法来访问和修改,而不能直接通过对象的属性名来操作。另外,计算属性不会被序列化,也不会在对象的原型链中被继承。对于只读的计算属性,只需要定义`get`方法而不定义`set`方法即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值