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)
}
相关推荐
·醉挽清风·11 分钟前
学习笔记—双指针算法—移动零
c++·笔记·学习·算法
艾醒(AiXing-w)16 分钟前
探索大语言模型(LLM):自监督学习——从数据内在规律中解锁AI的“自学”密码
人工智能·学习·语言模型
薛瑄43 分钟前
FFmpeg之三 录制音频并保存, API编解码从理论到实战
ffmpeg·音视频·xcode
搏博2 小时前
机器学习之三:归纳学习
人工智能·深度学习·学习·机器学习
AgilityBaby2 小时前
unity Animation学习,精准控制模型动画播放
学习·3d·unity·游戏引擎
卓越进步3 小时前
层级时间轮的 Golang 实现原理与实践
开发语言·后端·golang
每次的天空3 小时前
Android学习总结之扩展基础篇(一)
android·java·学习
【0931】3 小时前
差错检测的学习
网络·学习
咦!一只菜鸡4 小时前
idea连接远程服务器kafka
分布式·学习·kafka
云攀登者-望正茂4 小时前
Golang 遇见 Kubernetes:云原生开发的完美结合
云原生·golang·kubernetes