要获取音频字节数后再得到音频时长,可以使用audio包中的wavmp3子包来实现。\n\n首先,你需要导入以下包:\n\ngo\nimport (\n\t"fmt"\n\t"os"\n\n\t"github.com/hajimehoshi/go-mp3"\n\t"github.com/hajimehoshi/oto"\n\t"github.com/go-audio/audio"\n\t"github.com/go-audio/wav"\n)\n\n\n然后,你可以使用以下代码来获取音频字节数:\n\ngo\nfunc GetAudioByteCount(filePath string) (int64, error) {\n\tfile, err := os.Open(filePath)\n\tif err != nil {\n\t return 0, err\n\t}\n\tdefer file.Close()\n\n\tfileInfo, err := file.Stat()\n\tif err != nil {\n\t return 0, err\n\t}\n\n\treturn fileInfo.Size(), nil\n}\n\n\n接下来,你可以使用以下代码来获取音频时长:\n\ngo\nfunc GetAudioDuration(filePath string) (float64, error) {\n\tfile, err := os.Open(filePath)\n\tif err != nil {\n\t return 0, err\n\t}\n\tdefer file.Close()\n\n\tvar d audio.Duration\n\tswitch filepath.Ext(filePath) {\n\tcase ".wav":\n\t dec := wav.NewDecoder(file)\n\t if err := dec.Decode(&d); err != nil {\n\t return 0, err\n\t }\n\tcase ".mp3":\n\t dec, err := mp3.NewDecoder(file)\n\t if err != nil {\n\t return 0, err\n\t }\n\t d = dec.Duration()\n\tdefault:\n\t return 0, fmt.Errorf("unsupported audio format")\n\t}\n\n\treturn d.Seconds(), nil\n}\n\n\n最后,你可以使用以下代码来测试:\n\ngo\nfunc main() {\n\tfilePath := "path/to/audio.wav"\n\n\tbyteCount, err := GetAudioByteCount(filePath)\n\tif err != nil {\n\t fmt.Println("Failed to get audio byte count:", err)\n\t return\n\t}\n\tfmt.Println("Audio byte count:", byteCount)\n\n\tduration, err := GetAudioDuration(filePath)\n\tif err != nil {\n\t fmt.Println("Failed to get audio duration:", err)\n\t return\n\t}\n\tfmt.Println("Audio duration:", duration)\n}\n\n\n请确保替换filePath为实际的音频文件路径。

Golang 获取音频字节数和时长:WAV 和 MP3 文件处理

原文地址: https://www.cveoy.top/t/topic/pZPI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录