ffmpeg使用手册
1 | cd D:\xx\xx\ffmpeg-20180405-e54679b-win64-static |
新建个文件夹video,把视频放文件夹内,生成后的picture也在文件夹内。
1 | ffmpeg.exe -i ./video/xx.mp4 ./video/frame%05d.png |
从第1秒开始,截取10秒。,默认fps 25
ffmpeg.exe -ss 146 -t 21 -i ./video/xx.wmv ./png/frame%05d.png
旋转90度
ffmpeg.exe -ss 146 -t 21 -i ./video/xx.wmv -vf "transpose=1" ./png/frame%05d.png
压缩(似乎没必要,gifski自带压缩)
pngquant png\*.png
转gif
.\gifski.exe --fps 25 --quality 100 png/frame*-fs8.png -o out.gif
.\gifski.exe --fps 25 --quality 100 png/frame*.png -o out.gif
参考文章
https://www.zhihu.com/question/28389894
ffmpeg.exe -ss 191 -t 60 -i ./video/xx.mp4 -vf "transpose=1" ./png/frame%05d.png
.\gifski.exe --fps 25 --quality 90 png/frame*.png -o out.gif
ffmpeg.exe -ss 191 -t 60 -i ./video/xx.mp4 ./png/frame%05d.png
每秒25帧输出。
生成git和ffmpeg 输出的帧率要一致:
ffmpeg.exe -ss 43 -t 10 -i ./video/xx.mp4 -r 25 ./png/frame%05d.png
.\gifski.exe --fps 25 --quality 100 png/frame*.png -o out.gif
———–以下这个方法太模糊——————-
ffmpeg.exe -ss 43 -t 10 -i ./video/xx.mp4 -b:v 2048k -r 25 out33.gif
ffmpeg.exe -ss 43 -t 10 -i ./video/xx.mp4 -r 15 -lavfi "fps=25,scale=960:-1:flags=lanczos[x];[x][1:v]paletteuse" -y out123.gif
———————-以下方法可行,最高质量生成gif——————-
-s 的参数可以通过ffmpeg -i ./video/xx.mp4查看
scale 要与 -s一致
ffmpeg -ss 43 -t 10 -i ./video/xx.mp4 -s 960x720 -vf "[in]scale=960x720,split[split1][split2];[split1]palettegen=stats_mode=single[pal];[split2][pal]paletteuse=new=1" -y -r 25 out33.gif
ffmpeg -ss 44 -t 3.8 -i ./video/yy.mp4 -s 1080x1920 -vf "[in]scale=1080x1920,split[split1][split2];[split1]palettegen=stats_mode=single[pal];[split2][pal]paletteuse=new=1" -y -r 30 wife.gif
ffmpeg -ss 01:36 -t 01:39 -i ./video/xx.mp4 -s 1080x1920 -vf "[in]scale=1080x1920,split[split1][split2];[split1]palettegen=stats_mode=single[pal];[split2][pal]paletteuse=new=1" -y -r 25 w2.gif
——-缩放—
https://www.cnblogs.com/xuguangzong/p/15775177.html
ffmpeg -ss 38:00 -to 39:30 -i ./video/xx.avi -vf scale=w=200:h=-1 ./png/f%04d.png
——–高清截图——–
ffmpeg -ss 01:36 -t0 01:39 -i ./video/xx.mp4 -qscale:v 2 -f image2 -r 25 ./png/f%04d.png
ffmpeg -r 20 -i png/f%7d.png zm.mp4
—裁剪—800:500
ffmpeg -ss 54:55 -to 54:56 -i ./video/heyzo-1122.mp4 -vf "crop=800:520,split[split1][split2];[split1]palettegen=stats_mode=single[pal];[split2][pal]paletteuse=new=1" -y -r 25 out5.gif
—裁剪—800:500–旋转90
ffmpeg -ss 54:55 -to 54:56 -i ./video/heyzo-1122.mp4 -vf "crop=800:520,transpose=1,split[split1][split2];[split1]palettegen=stats_mode=single[pal];[split2][pal]paletteuse=new=1" -y -r 25 out5.gif
每个逗号一个filter,首先裁剪,然后旋转,再高清输出。详细查
https://blog.csdn.net/weixin_36249804/article/details/113071641
调色板生高清gif
https://blog.csdn.net/bdu_zhangAo/article/details/110311232
1 | ffmpeg -i "视频位置" -b 568k -r 20 -vf fps=20,scale=视频宽度:-1:flags=lanczos,palettegen -y 调色板.png |
其中视频内容替换为你刚刚的视频,视频宽度替换为你刚刚查看到的视频宽度(或者随便来个800、1200啥的),宽度后面的:-1代表高度随宽度等比例缩放,调色板.png可以不用换,或者随便起个换个名字也行。
这个时候会生成一张小小的调色板.png
1 | ffmpeg -i "视频位置" -i 调色板.png -r 15 -lavfi "fps=15,scale=视频宽度:-1:flags=lanczos[x];[x][1:v]paletteuse" -y 生成的动图 |
其中视频位置还是刚刚的位置,调色板.png是刚刚生成的那个,视频宽度也是刚刚填的那个,生成的动图填你要生成的动图名称,比如1.gif
实例:
1 | ffmpeg -ss 01:36 -to 01:39 -i ./video/zm.mp4 -b 568k -r 20 -vf fps=20,scale=960:-1:flags=lanczos,palettegen -y 调色板.png |
ffmpeg旋转gif
1 | ffmpeg -i out0.gif -vf "transpose=1,split[split1][split2];[split1]palettegen=stats_mode=single[pal];[split2][pal]paletteuse=new=1" -y out22.gif |
一般转换格式用格式工厂,但是我感觉用控制台直接转换效率会更好,所以我整理制作了ffmpeg脚本,直接打命令然后将文件拖入控制台就能操作了
注意:
需要下载ffmpeg
-
将以下代码命名成相应的bat脚本即可
tinygif 转换视频为gif
1 | 复制代码 隐藏代码set p0=%1 |
tinymp4 转换视频为mp4
1 | 复制代码 隐藏代码set p0=%1 |
tinymp3 从视频中提取出音频
1 | 复制代码 隐藏代码set p0=%1 |
tinypng 将视频转换为png序列(注意,当视频时长多大会转换出非常巨大的图片列表)
1 | 复制代码 隐藏代码set p0=%1 |
视频提取音频:
要从AVI编码高质量MP3最佳使用**-q:a**用于可变比特率:
1 | ffmpeg -i sample.avi -q:a 0 -map a sample.mp3 |
如果要从视频中提取音频的一部分,请使用**-ss选项指定开始时间戳,使用-t**选项指定编码持续时间,例如从3分钟和5秒内指定45秒:
1 | ffmpeg -i sample.avi -ss 00:03:05 -t 00:00:45.0 -q:a 0 -map a sample.mp3 |
时间戳需要采用HH:MM:SS.xxx格式或以秒为单位.
如果不指定**-t**选项,它将结束.
这是
-q:a值的指南:https://trac.ffmpeg.org/wiki/Encode/MP3零是最高质量的VBR设置,通常会导致理性的平均比特率CBR范围(其中最大320 kbit / s,可能超出无损压缩变得更合适的点)。 (2认同)-map a做什么? (2认同)