ffplay ffmpeg参数
-x 设置显示宽
-y 设置显示高
-y (global):默认自动覆盖输出文件,而不再询问确认。
-n (global):不覆盖输出文件,如果输出文件已经存在则立即退出
-s 设置显示宽高 640x360
-an 屏蔽音频
-vn 屏蔽视频
-sn 屏蔽字幕
-ss 开始时间
-t 播放时长
-bytes 0不可拖动, 1 可以拖动, -1 自动
-nodisp 不显示窗口
-f 强制使用某种格式解析
-window_title 设置窗口标题
-af 设置音频滤镜
-codec 强制使用某种解码方式
-autorotate 自动旋转视频
-autoexit 自动退出,默认不自动退出
-loop 循环次数
-vf 视频滤镜
-af 音频滤镜
-acodec 音频解码
-vcodec视频解码
-scodec 字幕解码
-b 比特率, 缺省200kb/s,
-ab 音频码率
-r 帧频率, 缺省25,
-ar 音频采样率
-ac 音频通道,默认1
-aspect 设置纵横比4:3,16:9, 1.3333, 1.7777
-vd 设置视频的捕获设备,比如/dev/video0
-vc 设置视频的捕获通道dv1394专用
-tvstd 设置电视标准NTSC PAL SECAM
-dv1394 设置dv1394捕获
-av 设置音频设备 比如/dev/dsp
-vol或volume 100 设置音量
-map 0 选择所有流,-map iv所有视频流,-map i:a所有音频流,-map i:s字幕流
-L 显示许可证
-h, -?, -help, --help 帮助
-bsfs 显示比特流过滤器
-protocols 显示协议
-filters 显示过滤器
-pix_fmts //视频像素格式
-sample_fmst 音频采样格式
-layouts 通道
-colors 颜色名称
-fs 全屏模式
-window_title 窗口标题
-ast,-vst,-sst //选择音频,视频,字幕 流
-autoexit播放完毕自动退出
-exitonkeydown 按任何键退出
-exitonmousedown 按鼠标退出
-version:显示版本信息
-formats:显示所有有效的格式(包括设备)
-devices:显示有效设备
-codecs:显示所有已支持的编码
-decoders:显示所有有效解码器
-encoders:显示所有有效的编码器
-bsfs:显示有效的数据流(bitstream)滤镜
-protocols:显示支持的协议
-filters:显示libavfilter中的滤镜
-pix_fmts:显示有效的像素(pixel)格式
-sample_fmts:显示有效的实例格式
-layouts:显示信道名字和信道布局
-colors:显示注册的颜色名
-bsfs来获得当前可用的bit流滤镜
-bsf[:stream_specifier] bitstream_filters (output,per-stream):为每个匹配流设置bit流滤镜
-vd device 设置视频捕获设备。 比如/dev/video0
-vc channel 设置视频捕获通道 DV1394 专用
-av device 设置音频设备 比如/dev/dsp
-noborder 无边框窗口。
-window_title title 设置窗口标题(默认为输入文件名)。
-loop number 循环播放电影<number>次。 0意味着无限循环。
-showmode mode 设置要使用的节目模式。 模式的可用值为 ‘0, video’显示视频; ‘1, waves’显示音频波;‘2, rdft’ 使用RDFT((反向)实离散傅立叶变换)显示音频频段
-preset slow 它可取值为"ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow,placebo";默认值为medium。预设参数代表了编码速度,编码速度越慢,压缩率则越大。
-crf:指x264默认的质量和码率控制方式;x264的取值范围(0-51),默认值为23,值越小,压缩率越小(视频质量月好),压缩后文件越大;推荐的取值为(18-28)
视频编辑器:Avidemux, Blender(3D), Cinelerra, Kdenlive, Kino
音频编辑器:Audacity, Sox
注意事项
-map 2:3表示第3个输入文件的第4个数据流; -map 0:V:1 第一个输入文件,第二个视频流; -map -0:v:1 排除第一个文件,第二视频流; -map 0 第一个输入文件
复合滤镜由-filter_complex选项进行设定, -lavfi选项等效于-filter_complex
流的选择:默认视频质量最高的流音频就是包含最多声道的流,-vn/-an/-sn指定单个流, -map序号指定具体的流
-vcodec codec (output) 别名 -codec:v 或者 -c:v
-vf filtergraph (output):创建一个filtergraph的滤镜链并作用在流上。它实为-filter:v的别名
-vframes number (output):设置输出文件的帧数,是-frames:v的别名。
-aframes number (output):设置number音频帧输出,是-frames:a的别名
格式:ffmpeg [global options] [input file options] -i input_file [output file options] output_file
格式复杂:ffmpeg global_options input1_options -i input1 input2_options input2 output1_options output1 output2_options output2
ffmpeg -i in.mp4 out.avi
ffmpeg -i in.mp4 -f avi out.data
//转换类型,后缀名可以是其他后缀
ffmpeg -help 【long】【full】
ffmpeg -buildconf
//查询打开了哪些配置,关闭了哪些配置
ffmpeg -h demuxer=mp4
ffmpeg -i in.flv -c copy -f mp4 out.mp4
ffmpeg -ss 30 -t 10 -i in.mp4 -c copy out.mp4;
//截取视频中的30s开始10s一段
ffmpeg -i in.mp4 -vn -acodec copy out.aac
//提前音频流
ffmpeg i in.mp4 -an -vcodec copy out.mp4
//提前视频流
ffmpeg -i in.mp4 -vcodec copy -an -f m4v out.264
ffmpeg -i in.mp4 -ss 30 -t 10 -r 1 -f image2 image_%3d.jpeg
//ss开始时间,-t持续时间, -r 每隔多少时间截一张图。
ffmpeg -s 320x180 -pix_fmt yuv420p -i in.yuv -vcodec mpeg4 out.avi
ffmpeg -i in1.avi -an -r 25 out1.mpg === ffmpeg -i out1.mpg -i in2.mp3 -r 25 out2.mpg
//视频去音频,合并音频
ffmpeg -i in.avi -y -f image2 -t 0.001 -s 300x200 out.jpg
//截图 -y覆盖输出文件
ffmpeg -i in.avi -y -f image2 -ss 5 -t 0.001 -s 300x200 out.jpg
//截图
ffmpeg -i in.avi -vframes 30 -pix_fmt rgb24 -y -f gif out.gif
//截图gif
ffmpeg -i in.avi -pix_fmt rgb24 -ss 10 -t 5 -y -f gif out.gif
//截图 gif
ffmpeg -f gdigrab -framerate 30 -offset_x 0 -offset_y 0 -video_size 1600x900 -i desktop out.mpg
//windows 录屏命令
ffmpeg -list_devices true -f dshow -i dummy
//查看所有硬件支持的设备
ffmpeg -f dshow -i audio=”麦克风阵列“ out.mp3
//麦克风录音
ffmpeg -f dshow -i video=”Lenovo EasyCamera” out.mp4
//摄像头录制
ffmpeg -shownode 0 -f dshow -i video=”Lenovo EasyCamera”
//实时录制,边录边播
ffmpeg -f dshow -i audio=””:^ video=”” out.mp4
//录制音视频
ffmpeg -i input.avi -b:v 1500000 output.mp4
ffmpeg -i inout.avi -b:v 1500K output.mp4
ffmpeg -i input.avi -b:v 1500KB output.mp4
ffmpeg -i in.mp4 -vf hqdn3d,pad=2*iw out.mp4 ====> ffmpeg -i out.mp4 -i in.mp4 -filter_complex overlay=w out2.mp4
//一个视频转成两个视频的宽度并列显示两个视频
ffmpeg -i a.mov -i b.mov -map 0: v:0 -map 1: a :0 out.mov
//将第一个文件的第一个视频流和第二个文件的第一个音频流组合成新的视频
ffmpeg -i input.mp4 -b:a128k -b:v1500k output.mp4
ffmpeg -i in.mp4 -ss 1 audio.mp3===>ffmpeg -i in.mp4 -i audio.mp3 -map 0:v -map 1:a video.mp4
// 将音频延时一秒
ffmpeg -h decoder=flv
//显示flv解码器的信息
ffmpeg -bsfs
//显示内置的比特流过滤器的命令
ffmpeg -pix_fmts
//显示内置像素格式
ffmpet -sample_fmts
//显示音频采样格式
ffmpeg -protocols
//显示可用的协议
ffmpeg -help > data.txt
//将help信息覆盖到data.txt文件
ffmpeg -help >> data.txt
//将help信息追加到data.txt文件
ffmpeg -i in.avi -r 30 out.mp4
//修改帧率
ffmpeg -i in.avi -vf fps=fps=30 out.mp4
//过滤器修改帧率
ffmpeg -i in.mp4 -fs 10KB output.mp4
//修改文件的大小,不准
ffmpeg -i in.mp4 -s 320x240 out.mp4 === ffmpeg -i in.mp4 -vf scale=320:240 out.mp4
//效果一样
ffmpeg -i in.mp4 -vf scale=iw/2:ih/2 out.mp4
//缩小两倍
ffmpeg -i in.mp4 -vf scale=iw*0.9:ih*0.9 out.mp4
//缩小到90%
ffmpeg -i in.mp4 -vf -scale=400:400/a out.mp4
//宽度400,高度按宽度的缩放比例缩放
ffmpeg -i in.mp4 -vf scale=300*a:300 out.mp4
//高度300,宽度按高度的缩放比例缩放,*
ffmpeg -i in.mp4 -vf crop=iw/3:ih/2:iw/3*2:ih/4 out.mp4
//剪裁1/3宽,1/2高,x为2/3的宽度,y为1/4高度
ffmpeg -i in.mp4 -vf corp=100:100 out.mp4
//剪裁100x100的中心区域
ffmpeg -i in.mp4 -vf corpdetect=limit=0 out.mp4
//0-255剪裁掉黑边,0表示黑边,255表示白边
ffmpeg -f lavfi -i testsrc -vf crop=29:52:256:94 -t 10 out.mp4
//剪裁自带测试视频的计时区域10秒钟,一位数:29:52:256:94, 二位61:52:224:94, 三位
93:52:192:94,四位125:52:160:94
ffmpeg -i in.mp4 -vf pad=800:600:30:20:pink out.mp4
//pad填充颜色,底色,或者说是视频下面的颜色
ffmpeg -i in.mp4 -vf pad=ih*16/9:ih:(ow-iw)/2:0 out.mp4;
//16:9居中显示
ffmpeg -i in.mp4 -vf pad=iw:iw*3/4:0:(oh-ih)/2 out.mp4;
//4:3 居中显示
ffmpeg -i in.mp4 -vf pad=ih*ar:ih:(ow-iw)/2:0 out.mp4
//调小宽高比,增加宽度
ffmpeg -i in.mp4 -vf pad=iw:iw*ar:0:(oh-ih)/2 out.mp4
//调大宽高比,增加高度
ffmpeg -i in.mp4 -vf boxblur=1.5:1 out.mp4
//模糊效果
ffmpeg -i in.mp4 -vf smartblur=5:0.8:0 out.mp4
//也是模糊效果
ffmpeg -i in.mp4 -vf unsharp out.mp4
//锐化处理
ffmpeg -i in.mp4 -vf unsharp=6:6:-2 out.mp4
//锐化处理
ffmpeg -i in.mp4 -vf hqdn3d out.mp4
//画面降噪中的一种
ffmpeg -i in.mp4 -nr 500 out.mp4
//画面降噪中的一种
ffmpeg -i in1.mp4 -i in2.mp4 -filter_complex overlay=x:y out.mp4
//overlay画中画,覆盖物,in1视频背景,in2前景
ffmpeg -i in1.mp4 -i in2.mp4 -filter_complex overlay=W-w:H-h out.mp4
ffmpet -i in1.mp4 -itsoffset 5 -i in2.mp4 -filter_complex overlay=100:100 out.mp4
//前5秒显示画中画
ffmpeg -i in.mp4 -q 2 -c copy out.avi
//-q 视频质量,2为高质量,从1到31,1表示最高质量,也可以是-qscale
ffmpeg -i in.mp4 -t 01:20:30.200 out.mp4
//时分秒毫秒
ffmpeg -i in.mp4 -t 100.200 out.mp4
//秒毫秒
ffmpeg -i in.mp4 -aframes 1000 out.mp3
//多少帧的音频,音频帧-aframes/-frames:a, 数据帧-dframes/-frames:d, 视频帧-vframes/-frames:v
ffmpeg -i in.mp4 -timelimit 10 out.mp4
//限时10秒,时间不准
ffmpeg -i in.mp4 -i in2.mp3 -shortest output.mp4
//将最短的流合并新流
ffmpeg -i in.mp3 -metadata artist=甘雅琴 -metadata title=”陈 益洪” out.mp3
//修改艺术家和歌名, 可以是视频
ffmpeg -i in.mp3 -metadata aa=bbb out.mp3
//自定义元数据
ffmpeg -i in.mp3 -f ffmetadata data.txt
//将元数据保存到文件
ffmpeg -i data.txt -i in.mp3 out.mp3
//将元数据文件写入媒体文件
ffmpeg -i in.mp3 -map_metadata -1 out.mp3
//删除所有元数据
ffmpeg -i in.mp4 -vf subtitles=titles.srt out.mp4
//写入字幕
ffmpeg -i in.mp4 -ss 01:23:45 out.jpg
//截取这个时刻的一张图
ffmpeg -f lavfi -i color=c=#008080:s=640x360 out.jpg
//一张颜色的图片
ffmpeg -i in.png out.jpg
//png转jpg
ffmpeg -loop 1 -i in.jpg -t 10 out.mp4
//一张图片循环10秒生产视频
ffmpeg -f image2 -i img%3d.jpg -r 25 out.mp4
//一种规律的图片转成视频
ffmpeg -i in.mp3-vol 180 out.mp3
//0-256音量
ffmpeg -i in.mp3 -af volume=2/3 out.mp3
//音量
ffmpeg -i in.avi -i in.avi -filter_complex concat out.avi
//两个视频拼接成一个视频
ffmpeg -i in.mp4 -vf delogo=x=730:y=0:w=70:h=46:t=1:show=0 out.mp4
//删除右上角的logo图标,t或者band代表模糊厚度,默认为4; show默认为0,设置为1会有一个绿色查找框。
ffmpeg -i in.mp4 -vf deshake out.mp4
//去视频抖动
ffmpeg -i in.mp4 -vf drawbox=x=150:y=20:w=600:h=400:c=yellow out.mp4
//将某个颜色框加入视频指定位置
ffmpeg -f lavfi -i mptestsrc -vf blackdetect -f sdl ‘test’
//检测黑帧
ffmpeg -f lavfi -i mptestsrc -vf blackframe -f sdl ‘test’
//用黑帧过滤器检测
ffmpeg -i in.mp3 -vf showspectrum out.mp4
//显示声谱
ffmpeg -i in.mp3 -vf showwaves out.mp4
//音频波形可视化
ffmpeg -debug mmco -f lavfi -i mptestsrc -t 0.5 out.mp4
//控制台打印测试信息
ffmpeg -debug_ts -f lavfi -i mptestsrc -t 0.1 out.mp4
//打印时间戳测试信息
ffmpeg -benchmark_all -i in.mp4 out.mpg
//CPU使用时间和内存消耗
ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi
设定输出视频码率为64kbit/s:
ffmpeg -i input.avi -r 24 output.avi
切换帧率到24fps
ffmpeg -r 1 -i input.m2v -r 24 output.avi
强制把输入文件帧率设为1fps(仅为了建议raw格式数据), 并且把输出文件帧率设置为24fps:
ffmpeg -i h264.mp4 -c:v copy -bsf:v h264_mp4toannexb -an out.h264
其中-bsf是指使用某种滤镜
ffmpeg -i INPUT -f ffmetadata FFMETADATAFILE
利用ffmetadata导出元数据
ffmpeg -i INPUT -i FFMETADATAFILE -map_metadata 1 -codec copy OUTPUT
从FFMETADATAFILE 文件中加载元数据信息输出到输出文件中
ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT
这样最终输出将是视频上部是原始,下部是上部的镜像。(倒影效果)
同一路的滤镜间用逗号(‘,’)进行分割,不同路的滤镜间用分号(‘;’)进行分割。在这个例子里面`crop`和`vflip`是在同一路中的滤镜,`split`和`overlay`则不是同一路的(同一路的级联是对连续的视频进行,如果涉及到一输多、多输一或者多输多则都不是在同一路的,即不是同一路级联)。可以通过在方括号(’[]’)中的标签名来命名处理的链路。这个例子里,`split`滤镜生成了两路就通过`[main]`和`[tmp]`进行了标签命名以方便后续处理。
其中被`split`处理输出的第二路流被命名为`[tmp]`,它又被`crop`滤镜处理裁去下半部视频,然后通过`vflip`进行了水平镜像(垂直翻转,即把视频镜像到下半部了)。这是整个输出被命名为`flip`。再把`[main]`与`flip`通过`overlay`进行覆盖合成,即把源输入通过`split`滤镜获得的`[main]`的上半部分覆盖到由`crop`和`vflip`滤镜级联处理的输出(这里的`[flip]`)上最终得到了镜像结果。
一些滤镜支持参数列表: 滤镜名=由冒号(‘:’)隔开的多个参数`
ffmpeg -i infile -vf scale=640:360 outfile
滤镜链图: 通用的选项-filter/-vf/-af和-filter_complex,-lavfi
一个滤镜链包含序列链接起来的滤镜,这个序列由“,”分隔各个滤镜描述
一个滤镜链图包含序列滤镜链,这个序列有“;”分隔各个滤镜链描述
如果选项的值本身就是一个列表(例如format滤镜有一个像素格式列表选项),则这种列表通常用“|”分隔。
afade=t=in:ss=0:d=15 afade是滤镜名称,t=in中t是参数名称,in是参数值, :隔开多个参数名称和值, 如果没有写参数名称640:360则是按参数顺序。
aformat=sample_fmts=u8|s16:channel_layouts=stereo 强制输出为8位 或者16位 立体声,转换音频格式滤镜, |用来隔开可以取多个值
ffmpeg -i VIDEO -i AUDIO -filter_complex “[1:0]apad” -shortest OUTPUT 利用ffmpeg添加静音样本点,让视频和音频有同样长的持续时间(以视频时间为准的), [1:0]表示第二个输入文件的,第1个流。
ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv 从输入MP3文件中分离立体声
ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT 把3个输入流连接成一个多通道流
ffmpeg -i input.png -vf colorkey=green out.png
让所有的绿色像素透明
ffmpeg -i background.png -i video.mp4 -filter_complex “[1:v]colorkey=0x3BBD1E:0.3:0.2[ckout];[0:v][ckout]overlay[out]” -map “[out]” output.flv 在绿屏上显示背景图片
视频滤镜:
让视频输出暗色调
colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
增加对比度
colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
让视频更亮
colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
增加亮度
colorlevels=romin=0.5:gomin=0.5:bomin=0.5
转换源到灰度模式
colorchannelmixer=.3:.4:.3 .3:.4:.3 .3:.4:.3
模拟墨色应用
colorchannelmixer=.393:.769:.189 .349:.686:.168 .272:.534:.131
从(12,34)开始裁剪出一个100x100的图像
crop=100: 100:12:34
使用命名选项,同上例一样:
crop=w=100:h=100:x=12:y=34
在输入中心裁剪出100x100:
crop=100:100
裁剪输入的2/3区域:
crop=2/3*in_w:2/3*in_h
cropdetect
自动检测裁剪尺寸(自动去除边缘的黑部)
以2像素宽度绘制一个100x100的网格,颜色是红色,透明度50%
drawgrid=width=100:height=100:thickness=2:color=[red@0.5](mailto:red@0.5)
在图像上绘制3x3网格,透明度50%
drawgrid=w=iw/3:h=ih/3:t=2:c=[white@0.5](mailto:white@0.5)
在视频的上绘制文本或者描述于文件的文本块
drawtext
hflip
例如利用fmpeg水平翻转输入视频:
ffmpeg -i in.avi -vf "hflip" out.avi
vfilp
让输入垂直翻转
例如:利用ffmpeg垂直翻转视频
ffmpeg -i in.avi -vf "vflip" out.avi
smooth
平滑输入视频
滤镜接受的参数为:`type|param1|param2|param3|param4`
其中`type`是应用的平滑类型,有 "blur", "blur_no_scale", "median", "gaussian", 或者"bilateral".默认为"gaussian"
overlay
把一个视频覆盖在另外一个上面
它有两个输入,其中第一个输入是主要的输入会覆盖到第二个输入上
在据右下10像素位置绘制主要视频:
overlay=main_w-overlay_w-10:main_h-overlay_h-10
插入2个不同的透明PNG标志,(第二个在右下角):
ffmpeg -i input -i logo1 -i logo2 -filter_complex 'overlay=x=10:y=H-h-10,overlay=x=W-w-10:y=H-h-10' output
顺时针旋转PI/6:
rotate=PI/6
逆时针旋转PI/6 :
rotate=-PI/6
顺时针旋转45度:
rotate=45*PI/180
放缩输入为200x100
scale=w=200:h=100
等效于:
scale=200:100
或者:
scale=200x100
- 指定输出为缩写尺寸名:
scale=qcif
也可以写为:
scale=size=qcif
- 放大为输入的2倍:
scale=w=2*iw:h=2*ih
- 上面等效于:
scale=2*in_w:2*in_h
- 放大2倍,且采用交错放大模式:
scale=2*iw:2*ih:interl=1
- 缩小为一半:
scale=w=iw/2:h=ih/2
- 增大宽度,且高度保持:
scale=3/2*iw:ow
对一个输入创建2给相同的输出:
[in] split [out0][out1]
创建3给或者更多的输出,你需要为每个输出指定标签,如下:
[in] asplit=3 [out0][out1][out2]
如何在转换视频的时候将音频合成到视频中, 且覆盖其原来的音频
方法一:
./ffmpeg –i test.avi -an –r 25 test.mpg <回车>
./ffmpeg –i test.mpg –i test.mp3 –r 25 test1.mpg<回车>
方法二:
./ffmpeg –i test.avi –i test.mp3 –vcodec copy –acodec copy –r 25 test2.mpg<回车>
截取一张 300x200 尺寸大小的格式为 jpg 的一张图片:
./ffmpeg –i test.avi –y –f image2 –t 0.001 –s 300x200 test.jpg
要截取指定时间的图片, 如 5 秒之后的:
./ffmpeg –i test.avi –y –f image2 –ss 5 –t 0.001 –s 300x200 test.jpg
把视频的前 30 帧转换为一个动态的 gif 图
./ffmpeg –i test.avi –vframes 30 –pix_fmt rgb24–y –f gif test.gif
从视频中的第 10 秒开始截取后面的 5 秒内容转换为一个无限重播的动态 gif 图
./ffmpeg –i test.avi –pix_fmt rgb24 –ss 10 –t 5 –y –f gif test.gif
linux环境屏幕录制
./ffmpeg -f x11grab -r 25 -s wxga -i :0.0 /tmp/outputFile.mpg
摄像头的实时视频
./ffmpeg -f video4linux -s 320x240 -r 10 -i /dev/video0 test.asf
录音
./ffmpeg –i /dev/dsp -f oss test.mp3
ffmpeg -bsfs 显示内置的比特流过滤器的命令是:
ffmpeg -codecs
可以使用-codecs选项显示可用的解码器
ffmpeg -encoders
要显示内置的ffmpeg编码器的列表
ffmpeg -filters
要显示内置过滤器列表
ffmpeg -formats
要显示内置的音频和视频格式
ffmpeg -layouts
要显示可用的音频通道布局列表
ffmpeg -pix_fmts
该命令可以显示内置的像素格式列表:
ffmpeg -protocols
对于显示可用的文件协议
ffmpeg -sample_fmts
可用的音频样本格式
ffmpeg -i input.avi -r 30 output.mp4
改变电影的帧率。avi文件从25到30 fps值
ffmpeg -i clip.mpg -vf fps=fps=25 clip.webm
改变电影的帧率。avi文件从25到30 fps值
ffmpeg -i film.avi -b 1.5M film.mp4
设置总体1.5 Mbit / s的比特率
ffmpeg -i in.avi -b 0.5M -minrate 0.5M -maxrate 0.5M -bufsize 1M out.mkv
比特率(-b选项)、最小速率(-minrate)和最大速率(-maxrate)
ffmpeg -i input.avi -fs 10MB output.mp4
其中fs是指定文件大小,要指定10兆字节的最大输出文件大小
video_size = video_bitrate * time_in_seconds / 8
以字节为单位的视频流大小的方程
audio_size = sampling_rate * bit_depth * channels * time_in_seconds / 8
如果音频未压缩,其大小由公式计算:
audio_size = bitrate * time_in_seconds / 8。要计算压缩音频流的文件大小,我们需要知道它的比特率和方程
ffmpeg -i input.mpg -s 320x240 output.mp4
或 ffmpeg -i input.mpg -vf scale=320:240 output.mp4
效果一样
ffmpeg -i input.mpg -vf scale=iw/2:ih/2 output.mp4
按比例缩放视频输入ffmpeg -i input.mpg -vf scale=iw*0.9:ih*0.9 output.mp4
ffmpeg -i input.avi -vf scale=400:400/a
要将输出宽度设置为400像素,高度按比例设置 最终的宽高比不变
ffmpeg -i input.avi -vf scale=300*a:300
要将输出高度设置为300像素,宽度按比例设置, 必须用*
ffmpeg -i input -vf crop=iw/3:ih:iw/3:0 output
剪裁 crop=ow[:oh[:x[:y[:keep_aspect]]]], 如果使用了可选的keep_aspect参数,将会改变输出SAR(样本宽比)以补偿新的DAR(显示长宽比);in_w, iw输入的宽度; in_h, ih输入的高度;out_w, ow输出(裁剪)宽度,默认值= iw; out_h, oh输出(裁剪)高度,默认值= ih; a纵横比,与iw/ih相同; 如果只有w和h两个参数,则默认值被设置为自动裁剪输入中心的区域
ffmpeg -i input.avi -vf crop=iw/2:ih/2 output.avi
裁剪中间的区域
ffmpeg -i input.mpg -vf cropdetect=limit=0 output.mp4
自动检测出裁剪的非黑色区域; limit阈值,从0(无)到255 (all),默认值= 24
ffmpeg -i photo.jpg -vf pad=860:660:30:30:pink framed_photo.jpg
为了在一个800x600大小的照片周围创建一个30像素宽的粉红色框架; pad=width[:height[:x[:y[:color]]]] 中括号里面的参数都是可选的
ffmpeg -i input -vf pad=ih*16/9:ih:(ow-iw)/2:0:color output
从4:3到16:9的填充视频
ffmpeg -i hd_video.avi -vf pad=iw:iw*3/4:0:(oh-ih)/2 video.aviv
从16:9到4:3的填充视频
ffplay -f lavfi -i testsrc -vf hflip
水平翻转-vf hflip
ffplay -f lavfi -i rgbtestsrc -vf vflip
垂直翻转-vf vflip
ffplay -f lavfi -i smptebars -vf transpose=0
等价于 ffplay -f lavfi -i smptebars -vf transpose=2,vflip
旋转transpose:0输入由90°逆时针旋转并且垂直翻转, 1输入是顺时针旋转90°, 2 输入是逆时针旋转90°, 3输入是顺时针旋转90°并且垂直翻转
ffplay -f lavfi -i smptebars -vf transpose=3
等价于ffplay -f lavfi -i smptebars -vf transpose=1,vflip
ffmpeg -i input.mpg -vf boxblur=1.5:1 output.mp4
模糊视频效果 luma半径值为1.5,luma功率值为1
ffmpeg -i halftone.jpg -vf smartblur=5:0.8:0 blurred_halftone.png
模糊效果 luma范围0.1-5,亮度范围-1--1,亮度范围-30-30
ffmpeg -i input -vf unsharp output.mp4
锐化视频
ffmpeg -i input -vf unsharp=6:6:-2 output.mp4
锐化视频, 参数一:3-13默认5,参数二:3-13默认5,参数三:-2.5-5默认1
ffmpeg -i input.mpg -vf mp=denoise3d output.webm
降噪与denoise3d;mp=denoise3d[=luma_spatial默认4.0[:chroma_spatial默认3.0[:luma_tmp默认6.0[:chroma_tmp]]]]
ffmpeg -i input.avi -vf hqdn3d output.mp4
降噪与hqdn3d 参数跟上面一个一样
ffplay -i input.avi -nr 500
使用nr选项进行降噪
ffmpeg -i input1 -i input2 -filter_complex overlay=x:y output
视频覆盖命令的结构如下,input1是视频背景,input2是前景:
ffmpeg -i pair.mp4 -i logo.png -filter_complex overlay pair1.mp4
Logo在左上角
ffmpeg -i pair.mp4 -i logo.png -filter_complex overlay=W-w:H-h pair3.mp4
Logo在右下角, W H -宽度和背景高度(视频), w h -宽度和前景高度(logo)
ffmpeg -i input -vf drawtext=fontfile=arial.ttf:text=Welcome output
为视频添加文字
ffplay -f lavfi -i color=c=white -vf drawtext=fontfile=arial.ttf:text=Welcome
为视频添加文字
ffmpeg -i input.avi -c copy output.mov
如果只更改容器并保留编解码器,我们可以使用-c copy
或-c:a copy
或-c:v copy
选项
时间的两种格式
[-]HH:MM:SS[.m…]
[-]S+[.m…]
HH是小时数,MM是分钟数,SS或S是秒数,m是毫秒数。
-itsoffset 5 延迟5s
ffmpeg -i v.mpg -itsoffset 3 -i a.mp3 -map 0:v:0 -map 1:a:0 output.mp4
在10分钟(600秒)之后停止编码
ffmpeg -i input.mpg -timelimit 600 output.mkv
最短的流决定编码时间,其中音频文件持续时间少于视频(没有-shortest选项,剩下的音频流将被静音替代)
ffmpeg -i video.avi -i audio.mp3 -shortest output.mp4
帧数设置
音频: -aframes number 或者 -frames:a number
数据: -dframes number 或者 -frames:d number
视频: -vframes number 或者 -frames:v number
ffplay -i input.mpg -vf setpts=PTS/3
快3倍观看视频
ffplay -i input.mpg -vf setpts=PTS/(3/4)
慢3/4倍观看视频
ffplay -i speech.mp3 -af atempo=2
以2倍的速度听到输入音频, atempo的取值范围:0.5-2.0
ffmpeg -i input -metadata artist=我 -metadata title=们 -metadata age=10 output
//创建元数据
ffmpeg -i video.wmv -f ffmetadata data.txt
//将元数据保存到文本文件
ffmpeg -i data.txt -i video1.avi video1.wmw
//将元数据文件结合到视频中
ffmpeg -i input.avi -map_metadata -1 output.mp4
//删除元数据
ffmpeg -i input -ss t image.type
将一帧视频转成图片输出, 或 -ss 01:23:45
内置的测试颜色:color, mptestsrc, rgbtestsrc, smptebars, testsrc
ffmpeg -f lavfi -i color=c=##008080:s=728x90 leaderboard.jpg
生成纯颜色图片
ffmpeg -i clip.avi frame%4d.jpg
视频转图片
ffmpeg -i illustration.png illustration.jpg
图片格式转换
ffmpeg -loop 1 -i photo.jpg -t 10 photo.mp4
或 ffmpeg -f image2 -i img%3d.jpg -r 25 video.mp4
图片转视频
ffmpeg -i sound.wav -vol 180 sound_middle_loud.wav
音量设置:0-256
ffmpeg -i music.wav -af volume=2/3 quiet_music.wav
音量降2/3
ffmpeg -i stereo.mp3 -map_channel 0.0.1 -map_channel 0.0.0 ch_switch.mp3
若要在立体声音频文件中以正确的通道交换左通道
ffplay -f lavfi -i testsrc -vf pad=400:300:(ow-iw)/2:(oh-ih)/2:orange
-showmode 可以设置三个值:video、rdft、waves; 播放视频或波形图
ffmpeg -list_devices 1 -f dshow -i dummy
可用的相机和麦克风的列表---windows
ffmpeg -f avfoundation -list_devices true -i ""
可用的相机和麦克风的列表---mac; 看到文档中&##34;这个乱码是双引号
ffmpeg -f avfoundation -r 30 -i "1:0" -t 20 /Users/zhangfangtao/Desktop/test2.mp4
录屏20s
ffplay -f lavfi -i smptebars -vf lut=c1=128:c2=128
彩色变黑白,lut: c0,c1,c2,c3; lutrgb:r,g,b,a; lutyuv:y,u,v
ffplay -f lavfi -i smptebars -vf lutyuv=u=128:v=128
彩色变黑白
ffplay -i coconut.jpg -vf hue=60
要将输入的色调调整为60度, 范围:0-360;
ffplay -i strawberry.jpg -vf hue=s=5
饱和度:-10--10; hue=h=60:s=5;
ffmpeg -i eagles.mpg -vf delogo=x=700:y=0:w=100:h=50:t=3:show=1 nologo.mpg
移除视频中的logo
ffmpeg -i ship.avi -vf drawbox=x=150:w=600:h=400:c=yellow ship1.avi
将颜色框加入到视频
ffmpeg -i input.mpg -f null /dev/null
检测视频包含多少帧
ffmpeg -i audio.mp3 -vf showspectrum audio_spectrum.mp4
音频频谱
ffmpeg -i music.mp3 -vf showwaves waves.mp4
音频波形可视化
SDL
库播放ffplay -i in.mp4 -vf split[a][b]; [a]pad=2*iw[A];[b]hqdn3d[B];[A][B]overlay=w 跟上面那两天过滤命令一样的效果
ffplay -f lavfi -i testsrc -vf ^ split[1][2];[1]pad=iw*2[A];[2]lutrgb=g=256[B];[A][B]overlay=w//窗口2个在水平方向上显示比较
ffplay -f lavfi -i testsrc -vf ^ split[1][2];[1]pad=iw*2:ih:iw[A];[2]lutrgb=g=256[B];[A][B]overlay//跟上面一样
ffplay -f lavfi -i testsrc -vf split[1][2];[1]pad=iw*2;[2]lutrgb=g=256[A];[2]lutrgb=g=256[B];[A][B]overlay=w//跟上面一样
ffplay -f lavfi -i testsrc -vf ^ split[1][2];[1]pad=iw:ih*2[A];[2]lutrgb=g=256[B];[A][B]overlay=0:h //窗口两个在垂直方向上显示比较
ffplay -f lavfi -i testsrc -vf split[1][2];[1]pad=iw:ih*2:0:ih[A];[2]lutrgb=g=256[B];[A][B]overlay//跟上面一样
ffplay -f lavfi -i testsrc -vf ^ split=3[1][2][3];[1]pad=iw*3[A];[2]lutyuv=u=val*1.5[B];^ [3]lutyuv=v=val*1.5[C];[A][B]overlay=w[D];[D][C]overlay=w*2//三个窗口水平显示
ffplay -f lavfi -i testsrc -vf ^ split=3[1][2][3];[1]pad=iw*3:ih:iw[A];[2]lutyuv=u=val*1.5[B];^ [3]lutyuv=v=val*1.5[C];[A][B]overlay[D];[D][C]overlay=w*2 //跟上面一样
ffplay -f lavfi -i testsrc -vf ^ split=3[1][2][3];[1]pad=iw:ih*3[A];^ [2]lutyuv=u=val*1.5[B];[3]lutyuv=v=val*1.5[C]; ^ [A][B]overlay=0:h[D];[D][C]overlay=0:h*2//三个窗口垂直显示
ffpaly -f -lavfi -i testsrc -vf ^ split=3[1][2][3];[1]pad=iw:ih*3:ih[A];[2]lutyuv=u=val*1.5[B];^ [3]lutyuv=v=val*1.5[C];[A][B]overlay[D];[D][C]overlay=0:h*2//跟上面一样
ffplay -i in.jpg -vf split=4[1][2][3][4];[1]pad=iw*2:ih*2[A];^ [2]lutrgb=r=val*2[B];[3]lutrgb=g=val*2[C];[4]lutrgb=b=val*2[D];^ [A][B]overlay=w[E];[E][C]overlay=0:h[F];[F][D]overlay=w:h //四个窗口田字形排列
ffplay -vcodec h264 in.mp4
ffplay -showmode 1 in.mp3 //0, 不显示解码, 1,显示两条线条波形, 2,显示界面形
ffplay -vido_size 320x180 -pixel_format yuv420p -i in.yuv //yuv的播放
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。