• ffmpeg安装及使用


    下载

    下载地址:https://ffmpeg.org/download.html

    然后按照下图点击,找到Release部分下载一个即可。
    在这里插入图片描述
    在这里插入图片描述

    安装

    所谓安装就是解压并配置“path”环境变量
    将安装包解压至任意目录,比如我这里是D:\Program\ffmpeg-5.0.1-full_build
    按照以下顺序点击:“此电脑(右键)——属性——高级系统设置——环境变量”
    然后把ffmpeg.exe所在路径,即D:\Program\ffmpeg-5.0.1-full_build\bin添加到Path中,之后一路确定即可。
    在这里插入图片描述
    在这里插入图片描述

    验证安装:
    打开cmd,输入ffmpeg,出现正常的程序说明,就表明安装成功了
    在这里插入图片描述

    使用

    官方使用说明:https://ffmpeg.org/ffmpeg.html

    查看视频信息

    ffmpeg -i input.mp4
    
    • 1

    显示如下:
    在这里插入图片描述
    从上面可以得到如下信息:

    视频编码:h264
    色彩格式:yuvj420p
    色域范围:bt709
    分辨率:1080x1920(width x height)
    视频码率:14309 kbps
    帧率:30 fps
    音频编码:aac
    音频码率:115 kbps
    音频采样率:44100 Hz

    最简单用法

    ffmpeg -i input.mp4 -y output.avi
    
    • 1

    -i:指定输入
    -y:输出如果重名直接覆盖

    以拷贝的形式转格式,不重新编码,所以速度很快

    ffmpeg -i input.mp4 -vcodec copy -acodec copy output.avi
    
    • 1

    -vcodec copy:拷贝视频
    -acodec copy:拷贝音频

    改变帧率

    ffmpeg -i input.mp4 -r 10 -y output.mp4
    
    • 1

    -r 10:将输出帧率改为10 fps

    改变编码

    比如使用h265编码

    ffmpeg -i input.mp4 -vcodec libx265 -y output.mp4
    
    • 1

    之后再查看视频信息可以看到(hevc = h265):

    Stream #0:00x1: Video: hevc (Main) (hev1 / 0x31766568)

    控制转码质量

    ffmpeg -i input.mp4 -crf 35 -y output.mp4
    
    • 1

    ffmpeg -i input.mp4 -qp 30 -y output.mp4
    
    • 1

    QP(Quantization Parameters)和CRF(Constant Rate Factor)都是数值越小画质越好,数值越大画质越差。

    QP在整个编码中使用相同的量化参数。

    而CRF则具备自适应调节QP的能力,在画面运动比较强的时候使用高QP,在画面运动比较小的时候使用低QP。因为当画面运动比较强的时候,人的注意力常常不会被画质所吸引,所以QP大一些,也就是说画质差一些,不会造成太大的主观体验上的影响;反之当画面运动很小时,人的注意力有充分的空闲去注意画质问题,此时需要QP小一些,画质好一些,以避免带来糟糕的主观体验。另外与CRF名字呼应的一点,画面运动强时,视频片段倾向于有比较高的码率,使用大的QP有助于降低码率;画面运动小时,视频片段倾向于有比较低的码率,使用小QP可以提升一些码率,所以整体而言CRF会起到稳定码率的作用。

    一般来说,使用CRF的情况多于QP,如果不是对QP有特定需求,那么首选CRF模式。在几乎相同的视觉效果的情况下,CRF一般比QP能节省一些码率。

    关于CRF的取值范围和默认值可参考如下:
    在这里插入图片描述

    QP在libx264情况下取值范围也是0-51。

    控制输出码率

    ffmpeg -i input.mp4 -b:v 5M -y c.mp4
    
    • 1

    其中关键性的参数是-b:v 5M,指输出码率限制在5M bps。

    但请注意,这个模式只是控制视频最终的码率,并不意味着视频中码率一直保持固定值,事实上在这个模式下,视频码率变化反而会有一些不受控,有时(特别是每个转场后clip的初始一些帧)会特别低。

    时序裁剪

    ffmpeg -i input.mp4 -ss 0:0:5 -t 0:0:4 -y output.mp4
    
    • 1

    -ss:指定截取的起始时间点,格式是hh:mm:ss
    -t:截取的持续时间(duration),格式也是hh:mm:ss;或者简单写一个数字,单位是秒。

    空间裁剪

    ffmpeg -i input.mp4 -vf crop=500:1000:0:0 -y output.mp4
    
    • 1

    -vf 表示设置video相关的filters
    crop后面的参数格式是width:height: x:y。width和height是输出视频的宽高;x,y是输出视频的左上顶点的坐标。

    旋转视频

    ffmpeg -i input.mp4 -vf rotate=PI/4 -y output.mp4
    
    • 1

    rotate:以视频中心为旋转点,顺时针旋转视频,视频原本的宽高保持不变,所以旋转后视频会有内容缺失以及黑边。

    缩放视频

    ffmpeg -i input.mp4 -vf scale=360:540 -y output.mp4
    ffmpeg -i input.mp4 -vf scale=360:-1-y output.mp4
    
    
    • 1
    • 2
    • 3

    scale:格式是 width:height,其中一项可以设置成-1,此时会根据另一条边的比例自动计算。

    抽帧

    ffmpeg -i input.mp4 .\temp\frame_%3d.png
    
    • 1

    帧号从1开始计数,路径必须已经存在

    参考资料:

    FFmpeg 视频处理入门教程
    FFmpeg的安装与基础使用教程
    CRF Guide (Constant Rate Factor in x264, x265 and libvpx)
    Understanding Rate Control Modes (x264, x265, vpx)
    FFmpeg VBR Settings
    H.264 Video Encoding Guide
    you shouldn’t use ABR ever.

  • 相关阅读:
    ES(二)| 安装ES、Kibana、IK分词器、拼音分词器(自动补全)
    Weblogic弱口令getshell
    短视频如何用标题吸引人?分享七种标题类型,引起兴趣很关键
    js数组操作——对象数组根据某个相同的字段分组
    CSS-06:多类名的使用场景
    快速排序 ← PPT
    c++中类的默认成员函数
    网站为什么需要https证书以及如何申请
    什么时候不要采用微服务架构
    Redis高频面试题完整版
  • 原文地址:https://blog.csdn.net/bby1987/article/details/125562773