Golang FFmpeg音视频
“在Golang中如何调用FFmpeg处理音视频文件?有没有成熟的库推荐?目前遇到需要实现音视频转码、剪切和合并的功能,但不知道如何高效集成FFmpeg到Go项目中。希望有经验的开发者能分享具体实现方案或代码示例。”
2 回复
Golang可通过goav、ffmpeg-go等库调用FFmpeg处理音视频,支持转码、剪辑、流媒体等操作。适合高并发场景,结合goroutine可高效处理多媒体任务。
更多关于Golang FFmpeg音视频的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Golang中处理音视频时,FFmpeg是一个强大的工具。你可以通过以下方式集成:
-
使用
go-ffmpeg库(第三方封装):import "github.com/xfrr/goffmpeg/transcoder" func main() { trans := new(transcoder.Transcoder) err := trans.Initialize("input.mp4", "output.avi") if err != nil { panic(err) } done := trans.Run(false) <-done } -
直接调用FFmpeg命令行(通过
os/exec):package main import ( "os/exec" ) func main() { cmd := exec.Command("ffmpeg", "-i", "input.mp4", "-c", "copy", "output.avi") err := cmd.Run() if err != nil { panic(err) } } -
关键功能示例:
- 提取音频:
exec.Command("ffmpeg", "-i", "video.mp4", "-vn", "-acodec", "copy", "audio.aac") - 视频转码:
exec.Command("ffmpeg", "-i", "input.avi", "-c:v", "libx264", "output.mp4") - 获取视频信息:
exec.Command("ffprobe", "-v", "quiet", "-print_format", "json", "-show_format", "-show_streams", "video.mp4")
- 提取音频:
注意事项:
- 确保系统已安装FFmpeg(
ffmpeg和ffprobe在PATH中)。 - 处理大文件时建议使用进度监控(通过解析FFmpeg输出)。
- 考虑使用
context处理超时和取消。
推荐结合具体需求选择方案,直接命令行调用更灵活,而封装库可简化常用操作。

