2023-02-19:请用go语言调用ffmepg,输出视频文件信息。
2023-03-07 09:46:00 时间
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 年乱世,安防 AI 芯片未见英雄
- 病毒和战争齐飞,24 届秋招会更惨吗?
- 两年「分拆上市」路终止,大华旗下华创视讯何去何从?
- 在这座城市,离绿灯自由又近了一步
- 创企扎堆、亿级融资十余起,3D 视觉赛道吸金不断
- 如何判断服务器是云主机还是物理主机或docker容器
- 推荐一个爆火AI内容生成模型ChatGPT
- 简说软件开发(一):总览
- 30s 看懂最基础的认证方式: Session-Cookie 认证
- 美团一面:能不能通俗的解释下为什么要有意向锁这个东西?
- 生信学习小组Day 3-Linux环境下的软件安装
- 【统计学基础】从可视化到统计检验,比较两个或多个变量分布的方法总结
- 微服务的版本号要怎么设计?
- 家里已给全款买房,2023 届秋招拿了一堆 offer ,如何选择??
- 软件开发入门教程网之TypeScript 声明文件
- 唱歌就能画一幅图像? #whisper-to-stable-diffusion
- 免费的 AI 动作捕捉工具 #Rokoko Video
- 软件开发入门教程网之TypeScript 基础语法
- 软件开发入门教程网之TypeScript 类
- 微软靠OpenAI反杀Google?想多了