写点什么

2023-02-19:请用 go 语言调用 ffmepg,输出视频文件信息。

  • 2023-02-19
    北京
  • 本文字数:704 字

    阅读完需:约 2 分钟

2023-02-19:请用go语言调用ffmepg,输出视频文件信息。

2023-02-19:请用 go 语言调用 ffmepg,输出视频文件信息。


答案 2023-02-19:


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


代码参考 ffmpeg5 入门教程的第四个例子输出视频信息,用 golang 改写的


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


go run ./examples/a04get_stream_info/main.go
复制代码


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


package main
import ( "fmt" "os" "os/exec"
"github.com/moonfdd/ffmpeg-go/ffcommon" "github.com/moonfdd/ffmpeg-go/libavformat")
func main() { os.Setenv("Path", os.Getenv("Path")+";./lib") ffcommon.SetAvformatPath("./lib/avformat-58.dll") fmt_ctx := libavformat.AvformatAllocContext() //创建对象并初始化 ret := int32(0) fileName := "./resources/big_buck_bunny.mp4" //文件地址
for { //打开文件 ret = libavformat.AvformatOpenInput(&fmt_ctx, fileName, nil, nil) if ret < 0 { fmt.Printf("Cannot open video file\n") break //Cannot open video file }
//查找流信息(音频流和视频流) ret = fmt_ctx.AvformatFindStreamInfo(nil) if ret < 0 { fmt.Printf("Cannot find stream information\n") break }
fmt_ctx.AvDumpFormat(0, fileName, 0) //输出视频信息 break }
libavformat.AvformatCloseInput(&fmt_ctx) //关闭文件
fmt.Println("---------------------------------") cmd := exec.Command("./lib/ffprobe", fileName) data, err2 := cmd.CombinedOutput() if err2 != nil { fmt.Println("ffprobe err = ", err2) return } fmt.Println(string(data))}
复制代码



发布于: 刚刚阅读数: 2
用户头像

还未添加个人签名 2021-02-15 加入

还未添加个人简介

评论

发布
暂无评论
2023-02-19:请用go语言调用ffmepg,输出视频文件信息。_golang_福大大架构师每日一题_InfoQ写作社区