FFmpeg常用命令总结

ffmpeg命令分为8大类

  1. 查询命令

    ffmpeg -devices

    查看当前电脑的录制设备架构

    ffmpeg -f avfoundation -list_devices true -i ""

    查看当前电脑的录制设备列表

    ffmpeg f

    查看当前ffmpeg的各类详细信息

    ffmpeg -help

    查看ffmpeg的帮助文档

  2. 录制命令

    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的音频

  3. 解复用命令

    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文件,但是不含视频

  4. 处理原始数据命令

    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)

  5. 音视频裁剪命令

    ffmpeg -i demo.mp4 -ss 00:02:00 -t 20 demo.ts

    将demo,mp4从2分钟进行裁剪,裁剪成10秒的一个视频;

    -ss代表从什么时间点开始裁剪;

    -t代表裁剪的时长;

    .ts格式是一种日本高清摄像机录制之后封装的视频格式

  6. 视频图片互转命令

    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文件

  7. 直播流命令

    推流命令

    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地址上的视频拉到本地,同时对音视频编码保存到本地

  8. 滤镜命令
    滤镜原理:

    1. 拿到解码后的原始视频数据帧

    2. 对原始视频数据帧进行加滤镜

    3. 再进行编码得到滤镜后的编码数据包

    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就是不变动音频

  9. 其他命令

    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”复制代码

转载于:https://juejin.im/post/5c8906ab5188257e1b352136

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值