最近在用ffmpeg工具生成视频文件截图的时候,遇到一个问题。生成第3秒的截图很快,生成第30分钟的截图非常慢。同样的代码只是时间不同,为啥相差这多么呢?后来网上找了资料才解决这个问题,原来和参数顺序有关。 我们在拼接参数的时候,都习惯把-i放在最前面第一个参数,-ss这个参数是截取第几秒的视频图片。这2个参数互换下,把-ss放在首位,再生成会发现截取第30分钟和第3秒的耗时相差无几。 List<string> listP = new List<string>(); listP…
最近在用ffmpeg工具生成视频文件截图的时候,遇到一个问题。生成第3秒的截图很快,生成第30分钟的截图非常慢。同样的代码只是时间不同,为啥相差这多么呢?后来网上找了资料才解决这个问题,原来和参数顺序有关。 我们在拼接参数的时候,都习惯把-i放在最前面第一个参数,-ss这个参数是截取第几秒的视频图片。这2个参数互换下,把-ss放在首位,再生成会发现截取第30分钟和第3秒的耗时相差无几。 List<string> listP = new List<string>(); listP…
今天这篇博客,算是一个完整的案例,实现图文转视频功能。目前国内很多大厂的软件或App都有这个功能,但大多收费或效果一般。比如百度AI平台这个功能,单次价格10块左右,这让很多自媒体从业者望而却步;还有剪映,虽然功能强大,但自动生成的视频,有时真的驴唇不对马嘴,需要二次处理。今天就基于ffmpeg工具,实现这个功能,算是对ffmpeg的一个总结。素材可以是图片,也可以是视频。 一个完整的短视频,由这几个元素构成:标题视频、 内容视频、内容字幕、背景解说词、背景音乐、页脚视频。下面逐个实现,先看下主界面 1、标题视频 …
今天继续学习ffmpeg工具,上篇博客主要讲的是ffmpeg对音频和视频的处理,今天这篇是对图像的处理,没想到也能操作。它的命令和处理音视频的一样,都是命令行。能够处理图像的尺寸、裁剪、旋转、模糊、去噪、加水印和生成缩略图等。 1、图像处理命令 1.1、调整图像大小 ffmpeg -i input.jpg -vf scale=640:360 output.jpg 上述命令将输入图像 input.jpg 调整为分辨率为 640x360 的输出图像 output.jpg。 1.2、图像裁剪 ffmpeg -i inpu…
上一篇博客讲的是ffmpeg的命令行语法,这篇将通过更多示例继续讲解命令行的语法,算是进阶篇了。主要讲解ffmpeg对音频和视频的常用操作,比如音频切割、合并、转码,视频的切割、合并、加水印等。在讲解之前,我们需要先了解下几个名词 1、名词解释 1.1、采样率 采样率指音频每秒钟采样的次数,用赫兹(Hz)表示。采样率越高,音频的还原度越高,音质也越好,但同时文件大小也会增加。常见的采样率有44.1kHz、48kHz、96kHz等。 1.2、采样位深度 采样位深度指音频采样时每个样本的位数,通常是8位、16位、24位…
今天继续学习ffmpeg教程,关于命令行工具的。其实调用ffmpeg很简单,不需要什么操作界面,一句命令行就可以解决。比如查看音视频的信息,用(-i input.mp4)这一句代码就可以实现,是不是很简单?它本身有很多命令,可以理解成C#中的关键字,比如-vcodec、-acodec、-ss、-t等。这篇主要介绍这些命令行的关键字 1、常用命令行 1.1、查看音视频文件信息 ffmpeg -i input.mp4 1.2、视频格式转换 ffmpeg -i input.mp4 output.avi 1.3、视频编解码…
ffmpeg是处理音视频非常不错的开源组件之一,从这篇博客开始,对它进行一个比较系统的讲解,算是一个教程吧。最近一直在做这方面的软件,也算是个总结。 1、FFmpeg简介 ffmpeg是一款开源的跨平台音视频处理工具,可以完成音视频的采集、转码、过滤、解码、编码、封装等任务。它由C语言编写而成,支持多种音视频格式,包括但不限于MP4、AVI、MOV、FLV、MP3、AAC等等。FFmpeg可以运行在各种主流操作系统上,如Windows、Mac OS、Linux等。 作为一款音视频处理工具,FFmpeg有着广泛的应用…
今天用ffmpeg实现第一个功能,从视频文件中提取音频,生成mp3文件。代码很简单,只要拼接好正确的参数就行了。 源代码 #提取视频的音频 ffmpeg -i input.mp4 -vn output.mp3 #移除视频中的音频 ffmpeg -i input.mp4 -an output.mp4 常用参数列表 Hyper fast Audio and Video encoder usage: ffmpeg [options] [[infile options] -i infile]... {[outfile op…
使用ffmpeg,就肯定会读取音频或视频文件的信息,比如时长、数据速率、帧宽度和高度什么的,这些参数对于后期实现其他功能是非常重要的。今天就来介绍下如何获取音视频文件的媒体信息? 源代码 #获取媒体信息 ffmpeg -i source.file 输出日志 ffmpeg version 2021-11-22-git-203b0e3561-full_build-www.gyan.dev Copyright (c) 2000-2021 the FFmpeg developers built with gcc 11.2.…
一般我们使用ffmpeg对音频和视频进行编辑。因为是命令行操作,所以它不限任何编程语言,net或java程序员都可以使用,只要拼接的参数能被解析就没有问题。如果想玩点高级的,就要深入研究下了。比如今天这个,应该很多人都想实现,就是在ffmpeg执行任务的时候,能够及时返回任务的进度,被可视化控件调用时,可以及时输出任务进度百分比。 还是直接看源码,大约100行,比较直观 private string ExecFfmpegByArgs(string ffmpeg_exe, string args, in…