FFmpeg常用命令

2017-02-27  本文已影响0人  lost_devil

记录一下工作中常用的FFmpeg命令及其参数的解释,以例子的形式记录,某些参数可以组合使用。详细的用法请参考FFmpeg Documention

查看可用编解码器等信息

FFmpeg由于版本的不同,可支持的编解码器的名称及功能可能不一样,遇到问题时可以查一下

基础用法

ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy -y -f mp4 OUTPUT

直接推流mp4文件

ffmpeg -re -i INPUT.mp4 -c copy -f flv rtmp://……

本地文件重新编码并同时进行rtmp推流

ffmpeg -re -i INPUT -acodec aac -ac 2 -ar 44100 -ab 128k -vol 3000 -vcodec libx264 -vb 800k -s 360*640 -r 24 -b 928k -f flv rtmp://……

对视频画面旋转90°

ffmpeg -i INPUT -acodec copy -vcodec libx264 -b 800k -vf transpose=1 OUTPUT
L.R     L.l
. . ->  . .
l.r     R.r
L.R     l.L
. . ->  . .
l.r     r.R
L.R     R.r
. . ->  . .
l.r     L.l
L.R     r.R
. . ->  . .
l.r     l.L

修改视频分辨率并添加黑边

ffmpeg -i INPUT  -vf "scale=640:360,pad=640:1138:0:389:black" -acodec copy -vcodec libx264 -s 640*1138 -b 800k OUTPUT

现将视频分辨率压缩到640×360,再给视频加上黑边,最终视频分辨率改为640×1138

scale=200:100

等同于

scale=200x100

等同于

scale=w=200:h=100

当宽或高的值为-1时,表示维持原有宽或高
还可以使用一些常量定义,iwihowoh,分别表示输入宽、输入高、输出宽、输出高,假设要缩小到原来的1/2,则可以用

scale=iw/2:ih/2

假设要宽度变成原来的2/3,高度和最后的宽度一样,则可以用

scale=2/3*iw:ow
pad=w:h:x:y:color

w、h表示输出的宽、高,x、y表示原视频画面在最终输出画面中的左上角位置,color表示边框的颜色,默认是black,其余颜色请参考FFmpeg颜色定义

裁减视频画面

ffmpeg -i INPUT -vf crop=995:1080:540:0 -acodec copy -vcodec libx264 -f mp4 OUTPUT

截取视频生成Gif

从视频25s处开始,截取10s长度的画面生成320x240大小、帧率为15fps的Gif

ffmpeg -ss 25 -t 10 -i INPUT -s 320x240 -f gif -r 15 OUTPUT.gif

截取视频内任意时间点的一帧图像保存为JPEG文件

ffmpeg -ss 16.1 -i INPUT -s 320x240 -vframes 1 -f image2 OUTPUT.jpeg

抽取帧序列,再生成Gif

从源视频中每秒钟抽取5帧图像,保存为一系列JPEG文件

ffmpeg -ss 25 -t 10 -i INPUT -r 5 -s 320x240 -f image2 D:\result-%03d.jpeg

将这一系列JPEG图像合成为帧率5 fps的GIF文件

ffmpeg -f image2 -framerate 5 -i D:\result-%03d.jpeg OUTPUT.gif

生成高质量Gif

上述方法生成的Gif画质比较一般,下面的方法可生成更高质量的Gif,windows平台下将下面代码存为bat文件执行即可

@echo on
set start_time=00:00:10
set duration=5
set palette="D:\tmp\palette.png"
set filters="fps=15,scale=270:-1:flags=lanczos"
ffmpeg -v warning -ss %start_time% -t %duration% -i INPUT -vf "%filters%,palettegen" -y %palette%
ffmpeg -v warning -ss %start_time% -t %duration% -i INPUT -i %palette% -lavfi "%filters% [x]; [x][1:v] paletteuse" -y OUTPUT.gif
pause

中间要生成一个调色板文件D:\tmp\palette.png,再利用此调色板生成Gif,具体原理请参阅使用FFmpeg处理高质量GIF图片

剪切视频

ffmpeg -ss 00:00:20 -t 00:00:30 -i INPUT -c copy OUTPUT

精确剪切mp4视频

ffmpeg -i input.mp4 -qscale 0 -intra temp.mp4
ffmpeg -ss 00:00:30 -vsync 0 -t 00:00:30 -i temp.mp4 -acodec libvo_aacenc -vcodec libx264 output.mp4

将一张图片转成任意时长的视频

ffmpeg -loop 1 -i input.png -vcodec libx264 -vb 500k -s 480*640 -r 15 -t 10 ouput.mp4
上一篇 下一篇

猜你喜欢

热点阅读