2023-02-18:ffmpeg是c编写的音视频编解码库,请问用go语言如何调用?例子是03输出版本号。
2023-06-13 09:17:03 时间
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 main
import (
"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))
}
相关文章
- 2022-09-24:以下go语言代码输出什么?A:1;B:3;C:13;D:7。 package main import ( “fmt“ “io/ioutil
- 2022-08-23:以下go语言代码输出什么?A:map[baz:2 foo:0];B:map[bar:1 baz:2];C:map[baz:2];D:不确定
- 2022-08-27:以下go语言代码输出什么?A:[0];B:panic;C:7;D:不清楚。 package main import ( “fmt“ ) f
- 2022-08-31:以下go语言代码输出什么?A:江苏;B:v[“province“]取值错误;C:m.Store存储错误;D:不知道。 package ma
- 2022-09-04:以下go语言代码输出什么?A:不能编译;B:45;C:45.2;D:45.0。 package main import ( “fmt“ )
- go富集分析和kegg富集分析的区别_非模式生物怎么做GO富集
- 使用Go设计多缓存驱动
- 2022-10-10:以下go语言代码输出什么?A:[1 2 3 0 1 2];B:死循环;C:[1 2 3 1 2 3];D:[1 2 3]。 package
- 2022-10-12:以下go语言代码输出什么?A:1;B:2;C:panic;D:不能编译。 package main import “fmt“ func m
- 2022-10-31:以下go语言代码输出什么?A:map[];B:nil;C:Panic;D:编译错误。 package main import “fmt“
- 2022-07-26:以下go语言代码输出什么?A:5;B:hello;C:编译错误;D:运行错误。package mainim
- 2022-08-25:以下go语言代码输出什么?A:1 0;B:1 2;C:不能编译;D:0 0。package mainimp
- 2022-09-02:以下go语言代码输出什么?A:9;B:11;C:编译错误;D:不确定。package mainimport
- 2022-09-04:以下go语言代码输出什么?A:不能编译;B:45;C:45.2;D:45.0。package mainim
- 2022-09-08:以下go语言代码输出什么?A:5 66;B:5 88;C:7 88;D:以上都不对。package mai
- 2022-09-10:以下go语言代码输出什么?A:编译错误;B:49.0;C:49。package mainimport (
- 2022-10-08:以下go语言代码输出什么?A、0 0;B、0 4;C:4 0;D:4 4。package maincons
- 2022-10-18:以下go语言代码输出什么?A:panic;B:编译错误;C:moonfdd1。package mainim
- 2023-01-09:以下go语言代码输出什么?A:+Inf; B:zero; C:something else; D:doesn‘t compile。 pac
- 2022-11-08:以下go语言代码输出什么?A:2;B:编译错误;C:运行 panic。package mainimport
- 2023-01-09:以下go语言代码输出什么?A:+Inf; B:zero; C:something else; D:does
- Go—go-cache包学习详解编程语言
- 环境Go 编译 在 Linux 环境中的体验(go编译linux)
- 简易教程:如何在 Linux 上安装 GO 语言(go语言安装linux)
- 使用Go语言实现Redis数据库(用go实现redis)
- Go语言操作Oracle轻松实现数据库编程(go语言访问oracle)
- Go语言快速安装Oracle数据库(go语言安装oracle)