ffmpeg命令分为8大类架构
查询命令ide
ffmpeg -devices编码
查看当前电脑的录制设备架构spa
ffmpeg -f avfoundation -list_devices true -i ""3d
查看当前电脑的录制设备列表code
ffmpeg f视频
查看当前ffmpeg的各种详细信息server
ffmpeg -help索引
查看ffmpeg的帮助文档图片
录制命令
ffmpeg -f avfoundation -i 1 -r 30 out.yuv
使用1图像设备(0:摄像头;1:录屏)录制文件名为out.yuv的30fps的视频
ffmpeg -f avfoundation -i :0 out.aac
使用0音频设备(0:电脑自带的麦克风)录制名为out.aac的音频
解复用命令
ffmpeg -i demo.mp4 -vcodec copy -acodec copy demo.flv
将demo.mp4文件的音频和视频原封不动的拷贝成demo.flv文件,不改变其分辨率,格式,滤镜等
ffmpeg -i demo.mp4 -vcodec copy -an demo.h264
将demo.mp4文件的视频原封不动的拷贝成demo.flv文件,可是不含音频
ffmpeg -i demo.mp4 -vn -acodec copy demo.aac
将demo.mp4文件中的音频原封不动的拷贝成demo.aac文件,可是不含视频
处理原始数据命令
ffmpeg -i demo.mp4 -an -c:v rawvideo -pix_fmt yuv420p demo.yuv
将demo.mp4文件转成demo.yuv这样的原始视频数据文件,其中不包含音频。而且编码为rawvideo原始视频文件像素格式是yuv420p。yuv经常使用像素格式444p,422p,420p
ffmpeg -i demo.mp4 -vn -ar 44100 -ac 2 -f s16le demo.pcm
将demo.mp4文件中的音频抽取出来转成demo.pcm这样的音频原始文件,其中不包含视频。其中音频采样率(audio rate)为44100,音频声道为2声道(audio channel)音频编码格式是s16le(s表明有符号的,即正负;16表明16进制;le表明小的little end)
音视频裁剪命令
ffmpeg -i demo.mp4 -ss 00:02:00 -t 20 demo.ts
将demo,mp4从2分钟进行裁剪,裁剪成10秒的一个视频;
-ss表明从什么时间点开始裁剪;
-t表明裁剪的时长;
.ts格式是一种日本高清摄像机录制以后封装的视频格式
视频图片互转命令
ffmpeg -i demo.mp4 -r 1 -f image2 image_%3d.jpeg
将demo.mp4视频按照1秒钟1张图片的方式截成image2格式的图片,若是视频有22秒,那么最终就是22张;
-r表明按照多少秒的间隔截取图片;
image2是一种图片格式;
image_%3d表明一种动态的命名规范,好比:image_001.jpeg;
ffmpeg -i image_%3d.jpeg demoImage.mp4
将符合image_%3.jpeg文件格式的全部文件转成mp4文件
直播流命令
推流命令
ffmpeg -re -i demo.mp4 -c copy -f flv rtmp://server/live/streamName
将demo.mp4文件推送到直播流地址中
-re表明减慢推流速度,让当前录制的视频和推流视频保持一致
-c表明音视频同时编码,若是只对视频编码-vcodec,音频就是-acodec
-f表明格式
拉流命令
ffmpeg rtmp://server/live/steamName -c copy demo.flv
将rtmp地址上的视频拉到本地,同时对音视频编码保存到本地
滤镜命令
滤镜原理:
拿到解码后的原始视频数据帧
对原始视频数据帧进行加滤镜
再进行编码获得滤镜后的编码数据包
ffmpeg -i demo.mp4 -vf crop=demo_w-200:demo_h-200 -c:v libx264 -c:a copy demo.mp4
将demo.mp4进行宽高各裁剪200像素的滤镜操做
-vf是对视频进行操做,crop是裁剪的意思后面跟着参数
-c:v 是对视频进行编码,后面跟着视频编码器,这里用的是lib264x
-c:a 是对音频进行编码,后面跟着音频编码器,这里用copy就是不变更音频
其余命令
ffplay demo.mp4
播放demo.mp4文件
ffplay -s 1280x800 -pix_fmt uyvy422 demo.yuv
播放分辨率是1280x800的像素格式是uyvy422的demo.yuv视频原始文件
附录:
-i:后面接文件名,“i”是“index”索引的简称,用于找到文件
-s:后面接一个分辨率或者大小,“s”是“size”大小的简称,用于指定原始视频文件(如:yuv格式)的分辨率,若是不指定的话,视频没法正常播放
-c:后面接编码命令,-c表明对音视频同时编码,若是单独对音频或者视频编码使用-acodec或者-vcodec
-pix_fmt:后面接一个视频格式,如:yuv420p,uyvy422等。“pix”是“pixel”像素的简称,“fmt”是“fomat”格式的简称。一样,若是不指定的话,原始视频文件没法正常播放
-f:后面接一个格式,好比:flv,MP4等
-vn:不对视频编辑或者屏蔽视频的命令,“v”表明“video”视频,“n”表明“no”
-an:不对音频编辑或者屏蔽音频的命令,“a”表明“audio”音频,“n”表明“no”
-vcodec:对视频进行编码
-avodec:对音频进行编码
copy:拷贝命令,通常用于更改视频或者音频格式
-ac:表明音频声道,“a”表明“audio”,“c”表明“channel”
-ar:表明音频采样率,“a”表明“audio”,“r”表明“rate”复制代码