【FFmpeg】ffmpeg 命令行参数 ④ ( ffmpeg 视频参数解析 | 设置视频帧数 | 设置视频码率 | 设置视频帧率 | 设置视频宽高 | 设置视频宽高比 | 设置视频滤镜 )





一、设置视频帧数 -vframes 参数



1、-vframes 参数解析


在 ffmpeg 命令中 , -vframes 参数 的 作用是 指定要输出的视频帧数 , 通过该参数 可以 控制 视频处理的长度 , 即 : 在输出多少帧后 停止处理 视频流 ;

使用 -vframes 参数时 , 后面 的 参数值 是 一个具体的帧数 , -vframes 100 参数 是 输出 100 帧 画面 的 视频 ;


在 新版本的 ffmpeg 中 , -vframes 参数 会被标记为过时 或 不再推荐使用 ; 此时 使用 -frames:v 参数 设置 输出视频帧数 ;


2、设置视频帧数示例


使用 -vframes 参数设置帧数

执行

ffmpeg -i input.mp4 -vframes 100 output.mp4

命令 , 将 input.mp4 视频文件 的 前 100 帧视频画面 输出到 到 output.mp4 视频文件中 ;

下图中 输出文件 output.mp4 视频文件中 , 每秒大约 30 帧 , 有 3 秒 840 毫秒 的视频 , 计算出来是 100 帧视频画面 ;

在这里插入图片描述

使用 -frames:v 参数设置帧数

执行

ffmpeg -i input.mp4 -frames:v 100 output.mp4

命令 , 将 input.mp4 视频文件 的 前 100 帧视频画面 输出到 到 output.mp4 视频文件中 ;

在这里插入图片描述





二、设置视频码率 -b:v / -b 参数



1、-b:v / -b 参数解析


在 ffmpeg 命令中 , -b:v 参数 和 -b 参数 的 作用 都是 设置 视频码率 ,

  • 推荐使用 -b:v 参数 设置视频码率 , 参数中的 b 代表 码率 ( bitrate ) , :v 表示该码率参数是针对 视频流 ( Vedio Stream ) 设置的 ;
  • 不推荐使用 -b 参数 , 该参数命令设置不明确 , -b 参数 同时可以用于设置 音频码率 和 视频码率 , 但是通常情况下 默认 设置的是 视频码率 ;

-b:v / -b 参数 值 是 要设置的 输出文件 的 视频 码率值 , 如 : -b:v 1M 参数的作用是 将 视频码率设置为 1 Mbps , Mbps 代表兆比特每秒 ( Megabits per second ) ;


2、设置视频码率示例


执行

ffmpeg -i input.mp4 -b:v 1M output.mp4

命令 , 将 输入文件 input.mp4 以 1M 的视频码率 输出到 输出文件 output.mp4 中 ;

输入文件 input.mp4 的 视频码率为 1580 kb/s , 输出文件 output.mp4 的 视频码率为 1000 kb/s , 视频大小 由 13.1MB 变为 8.16MB ;

在这里插入图片描述


执行

ffmpeg -i input.mp4 -b 1M output.mp4

命令 , 将 输入文件 input.mp4 以 1M 的视频码率 输出到 输出文件 output.mp4 中 ;

在这里插入图片描述





三、设置输出视频帧率 -r 参数



1、-r 参数解析


在 ffmpeg 命令中 , -r 参数 的 作用是 设置 输出视频 的 帧率 Frame Rate , 帧率是指每秒钟显示的图像帧数 , 单位是 FPS , Frame Per Second ;

通过 -r 参数 可以 控制 输出视频的 播放速度 和 平滑度 , 帧率越高 , 视频越平滑流畅 , 帧率越低 , 视频越卡顿 ;

-r 参数 的 参数值 是 一个具体的帧率值 , 是一个数字 , 一般情况下 取值 0 ~ 120 , 设置 -r 60 参数 , 表示 输出视频的帧率为 60 帧每秒 ;


注意 : -r 参数 设置的是 输出视频的帧率 , 输入视频的帧率是固定的 , 如果 输入视频的帧率 与 该 -r 参数 设置的 输出视频帧率不同 ,

  • 如果 输入视频帧率 > 输出视频帧率 : 通过 丢弃视频帧 来调整输出视频的帧率。
  • 如果 输入视频帧率 < 输出视频帧率 : 通过 增加重复帧 来调整输出视频的帧率。

2、设置输出视频帧率示例


执行

ffmpeg -i input.mp4 -r 60 output.mp4

命令 , 将输入文件 input.mp4 的 视频流 重新编码为 帧率为 60 帧每秒 , 并将结果保存到 output.mp4 文件中 ;

下图中 , 输入文件 input.mp4 的 帧率为 29.608 FPS , 输出文件 output.mp4 的 帧率为 60 FPS ;

在这里插入图片描述





四、设置视频画面宽高 -s 参数



1、-s 参数解析


在 ffmpeg 命令中 , -s 参数 的 作用是 设置 输出视频 的分辨率 , 单位是 像素 ;

-s 参数的 参数值 是 一个宽度和高度的值 , 中间用 x 分隔 , 如 : 如果输出视频的分辨率为 376x210 , 则可以使用 -s 376x210 参数设置 ;


2、设置视频画面宽高示例


执行

ffmpeg -i input.mp4 -s 376x210 output.mp4

命令 , 将输入文件 input.mp4 的 视频流 重新编码为 376x210 的分辨率 , 并将输出结果保存到 output.mp4 输出文件中 ;

下图中 , 输入文件 input.mp4 的 视频分辨率为 752x420 像素 , 输出文件 output.mp4 的 视频分辨率为 376x210 像素 ;

在这里插入图片描述





五、设置视频画面宽高比 -aspect 参数



1、-aspect 参数解析


在 ffmpeg 命令中 , -aspect 参数 的作用是 设置视频画面的宽高比 ;

使用 -aspect 参数时 , 设置的参数值是 一个宽高比的值 , 这个参数值可以是一个

  • 浮点数 : 表示宽度与高度的比值 , 如 : -aspect 0.5 ;
  • 以冒号分隔的两个整数 : 表示宽和高的具体数值 , 如 : -aspect 1:2 ;

2、设置视频画面宽高比示例


执行

ffmpeg -i input.mp4 -aspect 1:1 output.mp4

命令 , 将输入文件 input.mp4 的 视频流 重新编码为 1:1 的宽高比 , 并将输出结果保存到 output.mp4 输出文件中 ;

下图中 , 输入文件 input.mp4 的 视频分辨率为 752x420 像素 宽高比为 16:9 , 输出文件 output.mp4 的 视频分辨率为 752x420 像素 宽高比为 1:1 ;

在这里插入图片描述





六、设置视频编解码器 -vcodec 参数



1、-vcodec 参数解析


在 ffmpeg 命令中 , -vcodec 参数 的 作用是 指定 视频编解码器 ;

视频编解码器 是用于 对 视频数据 进行 压缩编码 和 解压缩解码 的算法 , 使用 不同的 编解码器 获得的 视频文件 的 画面质量 / 文件大小 / 兼容性 不同 ;

-acodec 后面的 参数值 是 编解码器的名称 ;


常见的 视频编解码器 包括

  • libx264 : 用于 H.264 格式的视频编码 ;
  • libvpx : 用于 VP8 编码 ;
  • libvpx-vp9 : 用于 VP9 编码 ;
  • copy : 用于直接复制原始视频流而不进行重新编码 ;

【FFmpeg】ffmpeg 命令行参数 ② ( Windows 环境中 ffmpeg 命令行输出文本搜索 -findstr 用法 | -findstr 搜索文本字符串用法 | 输出命令行到文件中 ) 博客中介绍了 获取 常用的 编解码器 的方法 , 执行

ffmpeg -encoders

命令 , 即可查看当前 版本的 ffmpeg 支持的 编解码器 ;

下面列举了 视频 编解码器 , 仅做参考 ;

 V..... a64multi             Multicolor charset for Commodore 64 (codec a64_multi)
 V..... a64multi5            Multicolor charset for Commodore 64, extended with 5th color (colram) (codec a64_multi5)
 V..... alias_pix            Alias/Wavefront PIX image
 V..... amv                  AMV Video
 V..... apng                 APNG (Animated Portable Network Graphics) image
 V..... asv1                 ASUS V1
 V..... asv2                 ASUS V2
 V..... libaom-av1           libaom AV1 (codec av1)
 V....D librav1e             librav1e AV1 (codec av1)
 V..... libsvtav1            SVT-AV1(Scalable Video Technology for AV1) encoder (codec av1)
 V..... avrp                 Avid 1:1 10-bit RGB Packer
 V..... libxavs2             libxavs2 AVS2-P2/IEEE1857.4 (codec avs2)
 V..X.. avui                 Avid Meridien Uncompressed
 V..... ayuv                 Uncompressed packed MS 4:4:4:4
 V..... bmp                  BMP (Windows and OS/2 bitmap)
 VF.... cfhd                 GoPro CineForm HD
 V..... cinepak              Cinepak
 V..... cljr                 Cirrus Logic AccuPak
 V.S... vc2                  SMPTE VC-2 (codec dirac)
 VFS... dnxhd                VC3/DNxHD
 V..... dpx                  DPX (Digital Picture Exchange) image
 VFS... dvvideo              DV (Digital Video)
 VF.... exr                  OpenEXR image
 V.S... ffv1                 FFmpeg video codec #1
 VF.... ffvhuff              Huffyuv FFmpeg variant
 V..... fits                 Flexible Image Transport System
 V..... flashsv              Flash Screen Video
 V..... flashsv2             Flash Screen Video Version 2
 V..... flv                  FLV / Sorenson Spark / Sorenson H.263 (Flash Video) (codec flv1)
 V..... gif                  GIF (Graphics Interchange Format)
 V..... h261                 H.261
 V..... h263                 H.263 / H.263-1996
 V.S... h263p                H.263+ / H.263-1998 / H.263 version 2
 V..... libx264              libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
 V..... libx264rgb           libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB (codec h264)
 V....D h264_amf             AMD AMF H.264 Encoder (codec h264)
 V....D h264_mf              H264 via MediaFoundation (codec h264)
 V....D h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)
 V..... h264_qsv             H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (Intel Quick Sync Video acceleration) (codec h264)
 V..... nvenc                NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc_h264           NVIDIA NVENC H.264 encoder (codec h264)
 V..... libx265              libx265 H.265 / HEVC (codec hevc)
 V..... nvenc_hevc           NVIDIA NVENC hevc encoder (codec hevc)
 V....D hevc_amf             AMD AMF HEVC encoder (codec hevc)
 V....D hevc_mf              HEVC via MediaFoundation (codec hevc)
 V....D hevc_nvenc           NVIDIA NVENC hevc encoder (codec hevc)
 V..... hevc_qsv             HEVC (Intel Quick Sync Video acceleration) (codec hevc)
 VF.... huffyuv              Huffyuv / HuffYUV
 V..... jpeg2000             JPEG 2000
 VF.... libopenjpeg          OpenJPEG JPEG 2000 (codec jpeg2000)
 VF.... jpegls               JPEG-LS
 VF.... ljpeg                Lossless JPEG
 VF.... magicyuv             MagicYUV video
 VFS... mjpeg                MJPEG (Motion JPEG)
 V..... mjpeg_qsv            MJPEG (Intel Quick Sync Video acceleration) (codec mjpeg)
 V.S... mpeg1video           MPEG-1 video
 V.S... mpeg2video           MPEG-2 video
 V..... mpeg2_qsv            MPEG-2 video (Intel Quick Sync Video acceleration) (codec mpeg2video)
 V.S... mpeg4                MPEG-4 part 2
 V..... libxvid              libxvidcore MPEG-4 part 2 (codec mpeg4)
 V..... msmpeg4v2            MPEG-4 part 2 Microsoft variant version 2
 V..... msmpeg4              MPEG-4 part 2 Microsoft variant version 3 (codec msmpeg4v3)
 V..... msvideo1             Microsoft Video-1
 V..... pam                  PAM (Portable AnyMap) image
 V..... pbm                  PBM (Portable BitMap) image
 V..... pcx                  PC Paintbrush PCX image
 V..... pfm                  PFM (Portable FloatMap) image
 V..... pgm                  PGM (Portable GrayMap) image
 V..... pgmyuv               PGMYUV (Portable GrayMap YUV) image
 VF.... png                  PNG (Portable Network Graphics) image
 V..... ppm                  PPM (Portable PixelMap) image
 VF.... prores               Apple ProRes
 VF.... prores_aw            Apple ProRes (codec prores)
 VFS... prores_ks            Apple ProRes (iCodec Pro) (codec prores)
 V..... qtrle                QuickTime Animation (RLE) video
 V..... r10k                 AJA Kona 10-bit RGB Codec
 V..... r210                 Uncompressed RGB 10-bit
 V..... rawvideo             raw video
 V..... roqvideo             id RoQ video (codec roq)
 V..... rpza                 QuickTime video (RPZA)
 V..... rv10                 RealVideo 1.0
 V..... rv20                 RealVideo 2.0
 V..... sgi                  SGI image
 V..... snow                 Snow
 V..... speedhq              NewTek SpeedHQ
 V..... sunrast              Sun Rasterfile image
 V..... svq1                 Sorenson Vector Quantizer 1 / Sorenson Video 1 / SVQ1
 V..... targa                Truevision Targa image
 V..... libtheora            libtheora Theora (codec theora)
 VF.... tiff                 TIFF image
 VF.... utvideo              Ut Video
 V..... v210                 Uncompressed 4:2:2 10-bit
 V..... v308                 Uncompressed packed 4:4:4
 V..... v408                 Uncompressed packed QT 4:4:4:4
 V..... v410                 Uncompressed 4:4:4 10-bit
 V..... libvpx               libvpx VP8 (codec vp8)
 V..... libvpx-vp9           libvpx VP9 (codec vp9)
 V..... vp9_qsv              VP9 video (Intel Quick Sync Video acceleration) (codec vp9)
 V..... libwebp_anim         libwebp WebP image (codec webp)
 V..... libwebp              libwebp WebP image (codec webp)
 V..... wmv1                 Windows Media Video 7
 V..... wmv2                 Windows Media Video 8
 V..... wrapped_avframe      AVFrame to AVPacket passthrough
 V..... xbm                  XBM (X BitMap) image
 V..... xface                X-face image
 V..... xwd                  XWD (X Window Dump) image
 V..... y41p                 Uncompressed YUV 4:1:1 12-bit
 V..... yuv4                 Uncompressed packed 4:2:0
 VF.... zlib                 LCL (LossLess Codec Library) ZLIB
 V..... zmbv                 Zip Motion Blocks Video

2、-vcodec 参数设置 libx264 视频编码器


执行

ffmpeg -i input.mp4 -vcodec libx264 output.mp4

命令 , 将 input.mp4 输入文件转换为 H.264 编码的视频 输出到 output.mp4 输出文件中 ;

在这里插入图片描述


3、-vcodec 参数设置 libvpx-vp9 视频编码器


执行

ffmpeg -i input.mp4 -vcodec libvpx-vp9 output.mp4

命令 , 将 input.mp4 输入文件转换为 VP9 编码的视频 输出到 output.mp4 输出文件中 ;

在这里插入图片描述







七、设置视频滤镜 -vf 参数



1、-vf 参数解析


在 ffmpeg 命令中 , -vf 参数 的 作用是 设置 视频滤镜 , 可以对输入的视频流进行各种复杂的图像处理 ;

-vf 参数 的 参数值 通常是 单个滤镜 或 多个由逗号分隔的滤镜链 , 每个滤镜都可以对视频进行特定的变换效果 ;

参考 【FFmpeg】ffplay 命令行参数 ④ ( 修改窗口标题 -window_title 参数 | 设置播放循环次数 | 设置显示模式 -showmode 参数 | 设置视频滤镜 -vf 参数 ) 四、ffplay 命令行参数 - 设置视频滤镜 博客中的 视频滤镜 设置 ,


2、视频滤镜示例


执行

ffmpeg -i input.mp4 -vf "scale=1280:720" output.mp4

命令 , 将输入视频 input.mp4 的尺寸调整为 1280x720 像素 , 并输出到 output.mp4 输出文件中 ;
在这里插入图片描述

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值