音乐时长 = (音乐文件大小 - 歌曲元信息大小(ID3v1,ID3v2)) / 码率 (注意单位转换)
- 音乐元数据([]byte)可以从文件或网络中获取
- ID3v1信息位于元数据尾部,固定128byte, ID3v2数据位于元数据头部,长度不定,此处粗略计算,忽略了ID3v2信息的长度
- 码率使用了 github.com/tosone/minimp3第三方库获取
import "github.com/tosone/minimp3"func GetMP3PlayDuration(mp3Data []byte) (seconds int, err error) {dec, _, err := minimp3.DecodeFull(mp3Data)if err != nil {return 0, err}// 音乐时长 = (文件大小(byte) - 128(ID3信息)) * 8(to bit) / (码率(kbps b:bit) * 1000)(kilo bit to bit)seconds = (len(mp3Data) - 128) * 8 / (dec.Kbps * 1000)return seconds, nil
}
PS:此处只适合粗略计算音乐时长,欢迎大佬提供更好的方案