1 Star 2 Fork 2

cyhgyq / FFmpegDemo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

参数说明

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命令

  • 格式: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.mp4ffmpeg -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 音频波形可视化

ffplay命令

  • 使用SDL库播放
  • ffplay -f dshow -i audio=”麦克风阵列” //实时录音,边录边播
  • ffplay -f lavfi -i smptebars //颜色条测试, rgbtestsrc,mptestsrc,testsrc
  • ffplay -f lavfi -i color=c=blue //整屏蓝色测试
  • 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 transpose=1 //测试视频,-vf 视频过滤,旋转90度
  • ffplay -i input.mp3 -af atempo=2 //-af 音频过滤,2倍速度播放
  • ffplay -f lavfi -i testsrc -vf hflip //水平翻转
  • ffplay -f lavfi -i rgbtestsrc -vf vflip //垂直翻转
  • ffplay -f lavfi -i smptebars -vf transpose=0//0,1,2,3分别代表180,90,360,270度旋转
  • fflay -f lavfi -i smptebars -vf transpose=2,vflip//跟上一句代码一样
  • ffplay -i in.mp3 -af atempo=2 //两倍速度播放 0.5-2范围
  • ffpaly -f lavfi -i aevalsrc=sin(523.2512PI*t) //测试一种声音
  • ffplay -f lavfi -i aevalsrc=sin(4952PIt):sin(5052PIt)::c=FL+FR //减轻压力的双耳音调
  • ffplay -f lavfi -i smptebars -vf lut=c1=128:c2=128 ====> ffplay -f lavfi -i smptebars -vf lutyuv=u=128:v=128 //将彩色转成黑白单色
  • ffplay -f lavfi -i smptebars -vf lut=c0=128:c1=128:c2=128:c3=128 //跟lutyuv一样,分别代表yuva
  • ffplay -f lavfi -i smptebars -vf lutrgb=r=128:g=128:b=128:a=128 //颜色转换成RGBA
  • ffplay -f lavfi -i smptebars -vf lutyuv=y=128:u=128:v=128:a=128 //颜色转换成yuva
  • ffplay -f lavfi -i smptebars -vf lutrgb=r=val*2 //色彩计算
  • ffplay -i in.jpg-vf hue=60 //0-360之间,色调
  • ffplay -i in.jpg -vf hue=h=60 //色调,跟上面一样,默认0
  • ffplay -i in.jpg -vf hue=s=2 //饱和度, -10 - 10, 0是黑白色, 默认1
  • ffplay -i in.jpg -vf hue=h=60:s=2//色调和饱和度
  • 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的播放

ffprobe

  • ffprobe in.mp4 //查看文件的信息
  • ffprobe -show_packets in.mp4
  • ffprobe -show_frames in.mp4
  • ffprobe -show_streams in.mp4 //查询文件的流信息

空文件

简介

27种ffmpeg入门demo 展开 收起
C 等 4 种语言
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/cyhgyq/ffmpeg-demo.git
git@gitee.com:cyhgyq/ffmpeg-demo.git
cyhgyq
ffmpeg-demo
FFmpegDemo
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891