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)
}
相关推荐
apocelipes19 小时前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
blanks20203 天前
ffmpeg 学习笔记 通过命令行采集音频
ffmpeg
Mahut7 天前
我用 Electron + FFmpeg 做了一个本地视频处理工作站 ClipForge
前端·ffmpeg·electron
通信小呆呆16 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
H__Rick16 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee16 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
Alsn8616 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
YM52e16 天前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统
何以解忧,唯有..16 天前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
小雨下雨的雨16 天前
HarmonyOS ArkUI训练营入门-组件掌握系列-Animation 动画效果实现-PC版本
学习·华为·harmonyos·鸿蒙