有没有熟悉 ffmpeg 的同学?我这样用 cgo 调用,为什么每次都会 fatal???

2019-06-17 23:41:51 +08:00
 Yoock

代码如下

https://gist.github.com/kaiiak/4e5f058f4289153a525a54fbc43e756a

错误信息如下

=== RUN   TestMp3TransformPcm
[mp3 @ 0xd000000] Estimating duration from bitrate, this may be inaccurate
find audio index 0
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0xa8 pc=0x5043cb9]

runtime stack:
runtime.throw(0x420e33b, 0x2a)
	/usr/local/opt/go/libexec/src/runtime/panic.go:617 +0x72
runtime.sigpanic()
	/usr/local/opt/go/libexec/src/runtime/signal_unix.go:374 +0x4a9

goroutine 19 [syscall]:
runtime.cgocall(0x41a2b30, 0xc000058d30, 0x4cee7a3)
	/usr/local/opt/go/libexec/src/runtime/cgocall.go:128 +0x7a fp=0xc000058d00 sp=0xc000058cc8 pc=0x40059fa
github.com/giorgisio/goav/avcodec._Cfunc_avcodec_decode_audio4(0x9806c00, 0xa127040, 0xc0000a0008, 0xa126600, 0x0)
	_cgo_gotypes.go:2173 +0x6b fp=0xc000058d30 sp=0xc000058d00 pc=0x415b31b
github.com/giorgisio/goav/avcodec.(*Context).AvcodecDecodeAudio4.func1(0x9806c00, 0xa127040, 0xc0000a0008, 0xa126600, 0x0)
	/Users/go/src/github.com/giorgisio/goav/avcodec/context.go:100 +0xdc fp=0xc000058d70 sp=0xc000058d30 pc=0x415b89c
github.com/giorgisio/goav/avcodec.(*Context).AvcodecDecodeAudio4(0x9806c00, 0xa127040, 0xc0000a0008, 0xa126600, 0x2)
	/Users/go/src/github.com/giorgisio/goav/avcodec/context.go:100 +0x57 fp=0xc000058db0 sp=0xc000058d70 pc=0x415b5b7
ffmpeg.Mp3TransformPcm(0x4206e3c, 0x5, 0x4233480, 0xc0000ae008, 0x0, 0x0)
	ffmpeg/mp3_to_pcm.go:53 +0x82d fp=0xc000058ef0 sp=0xc000058db0 pc=0x4169d3d
ffmpeg.TestMp3TransformPcm(0xc0000e6100)
	ffmpeg/mp3_to_pcm_test.go:14 +0x113 fp=0xc000058f70 sp=0xc000058ef0 pc=0x416a533
testing.tRunner(0xc0000e6100, 0x420fc50)
	/usr/local/opt/go/libexec/src/testing/testing.go:865 +0x164 fp=0xc000058fd0 sp=0xc000058f70 pc=0x40f2654
runtime.goexit()
	/usr/local/opt/go/libexec/src/runtime/asm_amd64.s:1337 +0x1 fp=0xc000058fd8 sp=0xc000058fd0 pc=0x405c1f1
created by testing.(*T).Run
	/usr/local/opt/go/libexec/src/testing/testing.go:916 +0x65b

goroutine 1 [chan receive]:
testing.(*T).Run(0xc0000e6000, 0x4209586, 0x13, 0x420fc50, 0x0)
	/usr/local/opt/go/libexec/src/testing/testing.go:917 +0x693
testing.runTests.func1(0xc0000e6000)
	/usr/local/opt/go/libexec/src/testing/testing.go:1157 +0xa9
testing.tRunner(0xc0000e6000, 0xc0000cdd48)
	/usr/local/opt/go/libexec/src/testing/testing.go:865 +0x164
testing.runTests(0xc00000e060, 0x4333190, 0x1, 0x1, 0x0)
	/usr/local/opt/go/libexec/src/testing/testing.go:1155 +0x524
testing.(*M).Run(0xc0000da000, 0x0)
	/usr/local/opt/go/libexec/src/testing/testing.go:1072 +0x2ec
main.main()
	_testmain.go:90 +0x335
FAIL	ffmpeg	0.102s
Error: Tests failed.
2041 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/574911

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX