【发布时间】:2020-02-18 13:09:01
【问题描述】:
我有一个 .mp3 文件存储在硬盘上。如何使用 go 语言找到它的长度(以秒为单位)?
我找到了 2 个关于 mp3 的 go 库:
但是没有工作示例如何以秒为单位获取 mp3 文件长度。
【问题讨论】:
我有一个 .mp3 文件存储在硬盘上。如何使用 go 语言找到它的长度(以秒为单位)?
我找到了 2 个关于 mp3 的 go 库:
但是没有工作示例如何以秒为单位获取 mp3 文件长度。
【问题讨论】:
您可以计算每帧的持续时间并将它们相加以得出总持续时间。
这是这个 (https://github.com/tcolgate/mp3) 库的示例,用于查找持续时间:
package main
import (
"fmt"
"io"
"os"
"github.com/tcolgate/mp3"
)
func main() {
t := 0.0
r, err := os.Open("<mp3 file path>")
if err != nil {
fmt.Println(err)
return
}
d := mp3.NewDecoder(r)
var f mp3.Frame
skipped := 0
for {
if err := d.Decode(&f, &skipped); err != nil {
if err == io.EOF {
break
}
fmt.Println(err)
return
}
t = t + f.Duration().Seconds()
}
fmt.Println(t)
}
【讨论】: