主要介绍FFmpeg视频处理入门课程,功能强大,应用广泛。它是许多音视频格式的标准编解码实现,具有一定的参考价值。感兴趣的朋友可以参考一下。
目录
I、概念1.1容器1.2编码格式1.3编码器II、FFmpeg III的使用格式、常用命令行参数IV、常用用法4.1查看文件信息4.2转换编码格式4.3转换容器格式4.4调整比特率4.5变换)4.6提取音频4.7添加音轨4.8截图4.9剪辑4.10添加音频V的封面、参考链接FFmpeg是视频
它功能强大,用途广泛,广泛应用于视频网站和商业软件(如Youtube和iTunes)。它也是许多音频和视频格式的标准编码/解码实现。
FFmpeg本身是一个庞大的工程,包含很多组件和库文件,其命令行工具是最常用的一个。介绍FFmpeg命令行如何处理视频,比桌面视频处理软件更简洁高效。
如果还没有安装,可以先按照官方文档完成安装。
一、概念
在介绍FFmpeg的用法之前,我们需要了解一些视频处理的基本概念。
1.1 容器
视频文件本身其实就是一个容器,里面有视频和音频,可能还有字幕等内容。
常见的容器格式如下。一般来说,视频文件的后缀反映了它的容器格式。
MP4MKVWebMAVI
以下命令查看FFmpeg支持的容器。
$ ffmpeg-格式
1.2 编码格式
视频和音频都需要编码后才能保存为文件。不同的编解码器,不同的压缩率,会导致文件大小和清晰度的差异。
常用的视频编码格式如下。
262
264
265
以上所有编码格式都是有版权的,但是可以免费使用。此外,还有几种不受版权保护的视频编码格式。
VP8
VP9
AV1
常用的音频编码格式如下。
MP3文件
加气混凝土
以上都是有损编码格式,编码后会丢失一些细节,换取压缩后文件更小。无损编码格式压缩的文件比较大,这里就不介绍了。
以下命令可以查看FFmpeg支持的编码格式,包括视频编码和音频编码。
$ ffmpeg-编解码器
1.3 编码器
编码器是实现某种编码格式的库文件。只有安装了某种格式的编码器,才能实现该格式的视频/音频的编码和解码。
这里有一些内置在FFmpeg中的视频编码器。
Libx264:最流行的开源H.264编码器NVENC:基于NVIDIA GPU的H.264编码器libx265:开源HEVC编码器libvpx: Google的VP8和VP9编码器libaom:AV1编码器
音频编码器如下。
lib fdk-AAC AC
以下命令可以查看已安装的FFmpeg编码器。
$ ffmpeg-编码器
二、FFmpeg 的使用格式
FFmpeg的命令行参数很多,可以分为五个部分。
$ ffmpeg {1} {2} -i {3} {4} {5}
在上面的命令中,五个部分的参数如下。
全局参数输入文件参数输入文件输出文件参数输出文件
当参数过多时,ffmpeg命令可以写成多行,以便于查看。
$ ffmpeg \
[全局参数] \
[输入文件参数] \
-I[输入文件] \
[输出文件参数] \
[输出文件]
下面是一个例子。
$ ffmpeg \
-y \ #全局参数
-c: alifbdk _ AAC-c: vlibx264 \ #输入文件参数
-I input.mp4 \ #输入文件
-c:v libvpx-vp9 -c:a libvorbis \ #输出文件参数
Output.webm #输出文件
上面的命令将mp4文件转换成webm文件,这两种文件都是容器格式的。输入mp4文件的音频编码格式为aac,视频编码格式为H.264:输出webm文件的视频编码格式为VP9,音频格式为Vorbis。
如果没有指定编码格式,FFmpeg会自己判断输入文件的编码。因此,上述命令可以简单地编写如下。
$ ffmpeg-I input . avi output.mp4
三、常用命令行参数
FFmpeg常用的命令行参数如下。
-c:指定编码器-c copy:直接复制,不需要重新编码(这样更快)-c:v:指定视频编码器-c:a:指定音频编码器-i:指定输入文件-an:删除音频流-vn:删除视频流-preset:指定输出视频质量,会影响文件生成速度。有以下可用值:超快、超快、非常快、更快、快、中等、慢、慢、非常慢。-y:不经确认输出时直接覆盖同名文件。
四、常见用法
以下是FFmpeg的一些常见用法。
4.1 查看文件信息
要查看视频文件的元信息,如编码格式和比特率,只能使用-i参数。
$ ffmpeg-I input.mp4
上面的命令会输出很多冗余信息,加上-hide_banner参数,只能显示元信息。
$ ffmpeg-I input.mp4-隐藏_横幅
4.2 转换编码格式
转码是指将视频文件从一种编码转换为另一种编码。比如编码器libx264一般用于H.264编码,你只需要指定输出文件的视频编码器。
$ ffmpeg-I[input . file]-c:v libx 264 output.mp4
下面是如何用H.265代码写的。
$ ffmpeg-I[input . file]-c:v libx 265 output.mp4
4.3 转换容器格式
传输指的是将视频文件从一个容器传输到另一个容器。下面是如何把mp4写到webm。
$ ffmpeg-I input.mp4-c复制输出. webm
在上面的例子中,只旋转了容器,内部编码格式保持不变,所以使用-c copy指定直接复制,不需要转码,速度更快。
4.4 调整码率
速率转换是指改变编码的比特率,通常用于降低视频文件的音量。以下示例指定最小码率为964K,最大码率为3856K,缓冲区大小为2000K。
$ ffmpeg \
-我是input.mp4
-min rate 964k-maxrate 3856k-bufsize 2000k \
output.mp4
4.5 改变分辨率(transsizing)
以下是将视频分辨率从1080p更改为480p的示例。
$ ffmpeg \
-我是input.mp4
-vf标度=480:-1 \
output.mp4
4.6 提取音频
有时,需要从视频中提取音频(demuxing),可以这样写。
$ ffmpeg \
-我是input.mp4
-vn -c:副本\
输出. aac
在上面的例子中,-vn表示删除视频,-c:a copy表示不改变音频编码直接复制。
4.7 添加音轨
复用是指给视频添加外部音频,如背景音乐或旁白。
$ ffmpeg \
-I input . AAC-I input.mp4 \
output.mp4
在上面的例子中,有两个输入文件,音频和视频,FFmpeg将它们合并成一个文件。
4.8 截图
下面这个例子是从指定时间开始连续截图一个1秒的视频。
$ ffmpeg \
-y \
-我是input.mp4
-ss 00:01:24 -t 00:00:01 \
output_=。使用jpeg文件交换格式存储的编码图像文件扩展名
如果只需要剪切一张图片,您可以指定只剪切一帧。
$ ffmpeg \
-第01章第23节第45分
-i输入\
-vframes 1 -q:v 2 \
output.jpg
在上面的例子中,-vframes 1指定只截取一帧,-q:v 2表示输出画质,一般在1到5之间(1为最高画质)。
4.9 裁剪
剪切是指从原始视频中剪切出一个片段,作为新视频输出。您可以指定开始时间(start)、持续时间(duration)或结束时间(end)。
$ ffmpeg-ss[开始]-I[输入]-t[持续时间] -c复制[输出]
$ ffmpeg-ss[开始]-I[输入]-to[结束]-c copy[输出]
下面是一个实际的例子。
$ ffmpeg-ss 00:01:50-I[输入] -t 10.5 -c复制[输出]
$ ffmpeg-ss 2.5-I[输入]-到10 -c拷贝[输出]
上面的例子,-c copy就是直接拷贝,不改变音视频的编码格式,这样会快很多。
4.10 为音频添加封面
有些视频网站只允许上传视频文件。如果你想上传一个音频文件,你必须给音频加一个封面,把它变成视频,然后再上传。
以下命令可以将音频文件转换成带封面的视频文件。
$ ffmpeg \
-回路1 \
-我cover.jpg-我输入. mp3 \
-c:v libx264 -c:a aac -b:a 192k最短\
output.mp4
在上面的命令中,有两个输入文件,一个是封面图像cover,另一个是音频文件input . MP3-loop 1参数表示图片无限循环,而-shortest参数表示音频文件结束,输出视频结束。
五、参考链接
FFmpeg libav教程
数字视频简介
FFmpeg编码和编辑课程
使用FFMpeg制作幻灯片
在Linux中使用ffmpeg的完整指南
以最简单的方式为视频添加字幕
这篇关于FFmpe视频处理入门课程的文章就到此为止(新手必看)。更多相关FFMPE介绍内容,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。