ffmpeg-go学习笔记

本博文基于go语言方式对ffmpeg进行简要学习,内容参考
传送门

ffmpeg的安装

这一步是大前提,打开百度,进入ffmpeg官网

点击,下载,选择windows的第二个,最后点这个,贪图方便,直接传送门
传送门

最后下载好后,解压后,效果这样

然后把bin目录与ffmpeg.exe加入path即可,使用cmd验证效果

文章的练习目录

mp4转avi

这段代码表现了将一个mp4文件转成avi文件

go 复制代码
package main

import (
	"fmt"
	"github.com/u2takey/ffmpeg-go"
)

func main() {
	err := ffmpeg_go.Input("./assets/woman1.mp4").
		Output("./assets/output2.avi", ffmpeg_go.KwArgs{"c:v": "libx264"}).
		OverWriteOutput().ErrorToStdOut().Run()
	if err != nil {
		fmt.Println(err.Error())
		return
	}
	fmt.Println("ok")
}

将视频生成1秒钟切片视频

go 复制代码
func main() {

	err := ffmpeg.Input("./assets/woman1.mp4", ffmpeg.KwArgs{"ss": 1}).
		Output("./assets/out1.mp4", ffmpeg.KwArgs{"t": 1}).OverWriteOutput().Run()
	fmt.Println(err)
	fmt.Println("ok")
}

对视频进行增加水印

go 复制代码
overlay := ffmpeg.Input("./assets/1.png").Filter("scale", ffmpeg.Args{"400:800"})
	err := ffmpeg.Filter(
		[]*ffmpeg.Stream{
			ffmpeg.Input("./assets/woman3.mp4"),
			overlay,
		}, "overlay", ffmpeg.Args{"50:50"}, ffmpeg.KwArgs{"enable": "gte(t,1)"}).
		Output("./assets/out2.mp4").OverWriteOutput().ErrorToStdOut().Run()
	fmt.Println(err)

视频生成gif

go 复制代码
err := ffmpeg.Input("./assets/woman2.mp4", ffmpeg.KwArgs{"ss": "5"}).
		Output("./assets/out1.gif", ffmpeg.KwArgs{"s": "2160x2880", "pix_fmt": "rgb24", "t": "2", "r": "3"}).
		OverWriteOutput().ErrorToStdOut().Run()
	fmt.Println(err)
  • ss:开始时间
  • t:持续时间
  • r:每秒几帧图片
  • s:生成gif分辨率

视频切割

go 复制代码
func main() {
	input := ffmpeg.Input("./assets/woman7.mp4").Split()
	// get multiple output with different size/bitrate
	out1 := input.Get("0").Filter("scale", ffmpeg.Args{"1920:-1"}).
		Output("./assets/1920.mp4", ffmpeg.KwArgs{"b:v": "5000k"})
	out2 := input.Get("1").Filter("scale", ffmpeg.Args{"1920:-1"}).
		Output("./assets/1280.mp4", ffmpeg.KwArgs{"b:v": "2800k"})

	err := ffmpeg.MergeOutputs(out1, out2).OverWriteOutput().ErrorToStdOut().Run()
	fmt.Println(err)
}
相关推荐
花酒锄作田5 天前
Gin 框架中的规范响应格式设计与实现
golang·gin
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码5 天前
嵌入式学习路线
学习
毛小茛5 天前
计算机系统概论——校验码
学习
babe小鑫5 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms5 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下5 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。5 天前
2026.2.25监控学习
学习
im_AMBER5 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode