1. 工具简介
ffmpeg是一个非常强大的工具,使用它可以转换视频格式,包括视频容器格式、视频编码格式。可以更改视频的其他的参数,比如帧率-每秒播放的帧数,视频的大小-尺寸等等。这里所说的视频,包括了视频和音频。另外,它还可以将图片转换为视频。
2. 工具安装
Windows下安装包地址:https://ffmpeg.zeranoe.com/builds/win64/static/
下载安装包直接解压即可使用。
如图,其中bin目录为ffmpeg可执行程序所在目录,可设置环境变量,以方便后续使用命令。
Linux下安装较Windows稍微复杂,需安装转码器。
详见:Linux下ffmpeg的完整安装 - wanghetao - 博客园
命令行下执行ffmpeg–version 提示如下:
说明安装成功。
3. 常用帮助命令
可用的bit流:ffmpeg–bsfs
可用的编解码器:ffmpeg–codecs
可用的解码器:ffmpeg–decoders
可用的编码器:ffmpeg–encoders
可用的过滤器:ffmpeg–filters
可用的视频格式:ffmpeg–formats
可用的声道布局:ffmpeg–layouts
可用的license:ffmpeg–L
可用的像素格式:ffmpeg–pix_fmts
可用的协议:ffmpeg-protocals
4. ffmpeg命令使用语法
命令格式:
ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件]
ffmpeg [[options][`-i' input_file]]... {[options] output_file}...
1、参数选项:
(1) -an: 去掉音频
(2) -acodec: 音频选项,一般后面加copy表示拷贝
(3) -vcodec:视频选项,一般后面加copy表示拷贝
2、格式:
(1) h264: 表示输出的是h264的视频裸流
(2) mp4: 表示输出的是mp4的视频
(3)mpegts: 表示ts视频流
如果没有输入文件,那么视音频捕捉(只在Linux下有效,因为Linux下把音视频设备当作文件句柄来处理)就会起作用。作为通用的规则,选项一般用于下一个特定的文件。如果你给–b 64选项,改选会设置下一个视频速率。对于原始输入文件,格式选项可能是需要的。缺省情况下,ffmpeg试图尽可能的无损转换,采用与输入同样的音频视频参数来输出。(by ternence.hsu)
格式详见:ffmpeg命令详解(转) - AllenChou - 博客园
5. 常用功能/命令
5.1. 视频容器转换
ffmpeg -i input.avi out.mp4 将input.avi转为out.mp4
ffmpeg -i input.avi -b:v 640k output.mp4 将input.avi转为out.mp4 并设置视频的码率为640kbps
另外,可将视频转为MP3、swf、gif等
5.2. 提取音频
ffmpeg -i input.mp4 -acodec aac -vn out.aac
5.3. 为视频添加logo
左上角: ffmpeg -i 3.mp4 -i logo.png -filter_complex overlay pair1.mp4
右上角: ffmpeg -i 3.mp4 -i logo.png -filter_complex overlay=W-w pair2.mp4
左下角: ffmpeg -i 3.mp4 -i logo.png -filter_complexoverlay=0:H-h pair3.mp4
右下角: ffmpeg -i 3.mp4 -i logo.png -filter_complex overlay=W-w:H-h pair4.mp4
删除logo
语法: -vfdelogo=x:y:w:h[:t[:show]]
x:y 离左上角的坐标
w:h logo的宽和高
t: 矩形边缘的厚度默认值4
show:若设置为1有一个绿色的矩形,默认值0.
ffplay -i pair1.mp4 -vfdelogo=x=1:y=1:w=220:h=91:show=0 预览
ffmpeg -i pair1.mp4 -vf delogo=x=1:y=1:w=220:h=91outaa.mp4
5.4. 视频文件截图
ffmpeg -i 3.mp4 -t 10 -pix_fmt rgb24 a.gif 从视频中生成GIF图片
ffmpeg -i 3.mp4 -vframes 30 -y -f gif a.gif 把视频的前30帧转换成一个Gif
ffmpeg -ss 00:00:45 -i 3.mp4 image.jpg 从视频指定时间截取一张图片
ffmpeg -i 3.mp4 -f image2 -vf fps=fps=1out%d.png 每隔1秒截一张图
ffmpeg -i 3.mp4 -f image2 -vf fps=fps=1/20out%d.png 每隔20秒截一张图
6. 结论
已测试。可实现常规视频格式间的转换;视频到音频的转换;视频图片的截取;视频水印的增加、删除。
<div id="page_end_html">
<script src="http://www.kailing.pub/Home/Tpl/default/Public/assets/l2dwidget.min.js"></script>
<script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
<script>
L2Dwidget.init({
"model": {
// 小可爱(女)
//jsonPath: "https://unpkg.com/live2d-widget-model-koharu@1.0.5/assets/koharu.model.json",
// 小可爱(男)
//jsonPath: "https://unpkg.com/live2d-widget-model-haruto@1.0.5/assets/haruto.model.json",
// 摇头猫
jsonPath: "https://unpkg.com/live2d-widget-model-hijiki/assets/hijiki.model.json",
// 初音
//jsonPath: "https://unpkg.com/live2d-widget-model-z16@1.0.5/assets/z16.model.json",
//萌娘
//jsonPath: "https://unpkg.com/live2d-widget-model-shizuku@1.0.5/assets/shizuku.model.json",
//帅哥
//jsonPath: "https://unpkg.com/live2d-widget-model-chitose@1.0.5/assets/chitose.model.json",
"scale": 1
},
"display": {
"position": "right", // 设置猫咪的上下左右位置
"width": 100,
"height": 200,
"hOffset": 0,
"vOffset": 0
},
"mobile": {
"show": true,
"scale": 0.5
},
"react": {
"opacityDefault": 0.7, // 设置猫咪的透明度
"opacityOnHover": 0.2
}
});
window.onload = function() {
$("#live2dcanvas").attr("style", "position: fixed; opacity: 0.7; left: 70px; bottom: 0px; z-index: 1; pointer-events: none;")
}
</script>