FFmpeg常用命令总结

作者: 宫山眉 | 来源:发表于2019-03-13 21:07 被阅读0次

    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”

    相关文章

      网友评论

        本文标题:FFmpeg常用命令总结

        本文链接:https://www.haomeiwen.com/subject/dgrxmqtx.html