ffmpeg-go学习笔记

发布于:2025-03-08 ⋅ 阅读:(97) ⋅ 点赞:(0)

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

ffmpeg的安装

这一步是大前提,打开百度,进入ffmpeg官网
在这里插入图片描述
点击,下载,选择windows的第二个,最后点这个,贪图方便,直接传送门
传送门
在这里插入图片描述
最后下载好后,解压后,效果这样
在这里插入图片描述

然后把bin目录与ffmpeg.exe加入path即可,使用cmd验证效果
在这里插入图片描述

文章的练习目录

在这里插入图片描述

mp4转avi

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

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秒钟切片视频

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")
}

对视频进行增加水印

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

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分辨率

视频切割

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)
}


网站公告

今日签到

点亮在社区的每一天
去签到