龙空技术网

2023-02-18:ffmpeg是c编写的音视频编解码库,请问用go语言如何

福大大架构师每日一题 787

前言:

现在同学们对“c语言编译库文件”大致比较看重,小伙伴们都需要了解一些“c语言编译库文件”的相关文章。那么小编在网络上收集了一些有关“c语言编译库文件””的相关知识,希望姐妹们能喜欢,朋友们一起来了解一下吧!

2023-02-18:ffmpeg是c编写的音视频编解码库,请问用go语言如何调用?例子是03输出版本号。

答案2023-02-18:

用 github.com/moonfdd/ffmpeg-go 这个库。

这是我自己写的golang绑定ffmpeg库,只依赖动态链接库,不依赖头文件,接口全部是按照头文件改过来的。

这个库目前只能用在windows上,原因是go的回调函数在c中调用,用syscall.NewCallBack函数转换成uintptr,而这个函数只支持windows操作系统。请各位高手提供下跨平台的callback转换函数,拜托了。

代码参考[ffmpeg5入门教程]()的第三个例子输出版本号,用golang改写的。

用如下命令便可查看运行结果。

go run ./examples/a03get_lib_version/main.go

代码用golang编写。代码如下:

package mainimport (	"fmt"	"os"	"os/exec"	"github.com/moonfdd/ffmpeg-go/ffcommon"	"github.com/moonfdd/ffmpeg-go/libavcodec"	"github.com/moonfdd/ffmpeg-go/libavutil")func main() {	os.Setenv("Path", os.Getenv("Path")+";./lib")	ffcommon.SetAvutilPath("./lib/avutil-56.dll")	ffcommon.SetAvcodecPath("./lib/avcodec-58.dll")	codecVer := libavcodec.AvcodecVersion()	ver_major := (codecVer >> 16) & 0xff	ver_minor := (codecVer >> 8) & 0xff	ver_micro := (codecVer) & 0xff	fmt.Printf("FFmpeg version is: %s .\navcodec version is: %d=%d.%d.%d.\n", libavutil.FFMPEG_VERSION, codecVer, ver_major, ver_minor, ver_micro)	fmt.Println("---------------------------------")	data, err := exec.Command("./lib/ffmpeg", "-version").Output()	if err != nil {		fmt.Println("ffmpeg err = ", err)	}	fmt.Println(string(data))}

标签: #c语言编译库文件 #最新的程序开发语言c中的应该发生什么音 #c语言视频解码 #c语言字符串视频