【发布时间】:2018-10-21 09:58:42
【问题描述】:
我想从带有id3-go 的文件中读取Popularimeter 框架。
这是使用mutagen-inspect 打印时框架的外观:
$ mutagen-inspect samples/with_popm.mp3 | grep POPM
POPM=traktor@native-instruments.de=0 255/255
我想从文件中读取值 (255/255)。由于找不到任何文档,我的幼稚做法是:
popFrame := mp3File.Frame("POPM")
log.Println(popFrame.String())
但是当我运行它时(在带有和不带有流行量表标签的文件上),我得到了分段错误:
$ ./id3-go-popm-example samples/with_popm.mp3
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x40 pc=0x4ac302]
goroutine 1 [running]:
main.main()
/home/ifischer/src/rivamp/rivamp-dist/id3-go-popm-example/main.go:21 +0xd2
$ ./id3-go-popm-example samples/without_popm.mp3
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x40 pc=0x4ac302]
goroutine 1 [running]:
main.main()
/home/ifischer/src/rivamp/rivamp-dist/id3-go-popm-example/main.go:21 +0xd2
我在此处设置了一个示例存储库,其中包含两个示例文件(一个带有,一个没有流行的框架):https://github.com/ifischer/id3-go-popm-example
如何使用 id3-go 库获取 Popularmeter 值 (255/255)?
【问题讨论】:
-
实际的段错误/回溯也可能会有所帮助。
-
@ShiDoiSi 用段错误更新了问题
-
我刚刚完成了对 id3-go 库的检查,这绝对是第 3 方的问题。可能的解决方案是: 1. 修复 id3-go 上的问题; 2.或者只是使用另一个库,比如@ssemilla's answer
-
如果你真的需要使用
id3-go,我已经添加了修复,这是一个单行修复,因为它只是缺少TDRC字段。 -
我还添加了代码 sn-p 来解析流行度计,因为它似乎不包含在
id3-go中。我希望这已经回答了这个问题。