FFmpeg视频转码关键参数详解

这篇具有很好参考价值的文章主要介绍了FFmpeg视频转码关键参数详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 固定码率因子crf(Constant Rate Factor)

固定码率因子(CRF)是 x264 和 x265 编码器的默认质量(和码率控制)设置。取值范围是 0 到 51,这其中越低的值,结果质量越好,同时输出文件越大,越高的值意味着越高的压缩比,但可能会在值大到某个点的时候注意到明显的质量损失。

  • 对 x264,一般取值在 18 到 28 之间,默认值是 23。
  • 对 x265,默认CRF值是 28

CRF数值 +6 会使文件大小减半,为了达到最优编码效果,主要在离线文件存储中使用CRF编码如下:

FFmpeg视频转码关键参数详解

命令行使用示例如下:

ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4

ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4

 2 指定编码速度preset

指定的编码速度越慢,获得的压缩效率就越高,取值范围如下:

ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow,placebo
  • placebo与veryslow相比提高了1%,以极高的编码时间为代价
  • veryslow与 slower相比提升了3%
  • slower与slow相比提升了5%
  • slow 与 medium相比提升了5%~10%

3 视频帧率

3.1 输入帧率

帧率(frame per second)就是视频每秒播放的图片的帧数。帧率至少要达到15fps,人眼才能才能看到连贯的动作。15fps即1秒刷新15次。帧率主要分为两类,一种是交错的(interlaced 缩写为i),一种是步进的(progressive 缩写为p)。

  • 交错帧率(interlaced 缩写为i)一般应用在电视节目上。NTSC(美国电视标准)使用60i的帧率,也就是每秒60个交错场(也就是30帧,两个交错场就是一帧)。PAL和SECAM标准使用50i的帧率,也就是每秒25帧。
  • 步进帧率(progressive 缩写为p)通常使用在电影节目上,常使用的值包括24p、25p、30p。最近一些高清的电影电视终端节目上30p已经无法满足需求,最新使用的帧率通常为50p和60p。

常见帧率的使用场景说明如下表所示:

帧率 描述
24p/23.976p  电影行业从1920年引入的标准帧率,在早期电影节目上使用的比较频繁。 NTSC采用该帧率的时候将帧率降到了23.976,PAL/SECAM采用该帧率的时候将帧率升到了25fps
25p 

使用50HZ电子频率国家中的电视电影节目的标准帧率,因为25p的帧率很容易转换成50i的帧率 

30p    数码相机和摄像机的帧率,30p的帧率很容易转换成60i用于电视直播
50i     PAL和SECAM电视标准的标准帧率
60i/59.94   NTSC标准中的标准帧率
50p/60p   高清电视(HDTV)常用的帧率
48p 新提出的帧率
72p  新提出的帧率
120p  超高清电视节目(UHDTV)使用的帧率
ffmpeg -i input.mp4

输出的帧率fps如下:

    Stream #0:1(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 19999 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 120k tbc (default)

3.2 输出帧率

在设置输出视频的帧率时,需要使用-r选项。以下是使用-r项设置输出视频帧率为30 fps的示例命令:

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

使用-r选项将输出视频的帧率设置为30 fps。输出视频的文件名为output.mp4。

通过代码使用Python的subprocess模块调用ffmpeg设置输出视频帧率

import subprocess

input_file = 'input.mp4'
output_file = 'output.mp4'
frame_rate = 30

command = ['ffmpeg', '-i', input_file, '-r', str(frame_rate), output_file]
subprocess.run(command)

4 输出分辨率

将input.mp4更改为分辨率320*240的视频输出,命令示例:

	ffmpeg -i input.mp4 -s 320x240 output.mp4 

视频分辨率和压缩大小参考 

分辨率 Bitrate 10分钟的视频
320p 320×240 180 kbit/s ~13 MB
360p 640×360 300 kbit/s ~22 MB
480p 864×480 500 kbit/s ~37 MB
576p 720x576 850 kbit/s ~63 MB
720p 960×720 1000 kbit/s ~75 MB

5 视频文件转gif图像

-ss 开始截图时间(秒) 截图开始时间越接近篇尾,所花费的时间就越长。
-t 截图时长(秒) 省略-ss和-t转换整个视频文件。
-i 输入文件
-y 覆盖旧文件
-s gif图片的宽和高
-f 生成图片格式 可以省略,按扩展名转换
-r 帧率 视频文件中每一秒的帧数

命令示例:

ffmpeg -ss 5 -t 10 -i input.mp4 -y -s 640x480 -f gif -r 1 output.gif

6 用图片制作视频和gif

将test-001.jpg,test-002.jpg…顺序排列的图片文件转换为视频和gif。文章来源地址https://www.toymoban.com/news/detail-502059.html

ffmpeg -f image2 -r 1 -i test-%03d.jpg -y output.mp4

ffmpeg -f image2 -r 1 -i test-%03d.jpg -y output.gif

到了这里,关于FFmpeg视频转码关键参数详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FFmpeg转码分辨率会变化的视频

    有一个H264的视频流源文件,希望能够想办法转换成mp4的格式。 mp4格式的视频大多数是固定分辨率的,比如960*480,如果h264视频流文件是固定尺寸的,那就没有任何问题。 但是,这个视频流文件! 不!是!固!定!尺!寸!的! 举个例子,我已手机的录屏为例,当手机横屏的

    2024年01月17日
    浏览(54)
  • SpringBoot集成ffmpeg实现视频转码播放

    之前构建过文件预览服务,对于视频部分前端播放组件限制只能为mp4格式,为了支持更多视频格式决定对方案进行升级,由于视频格式较多,针对每一种格式定制选择播放器不太现实,决定对视频源统一转码,转码后的格式为mp4,兼容性稳定且前后端改造工作较小 maven添加

    2024年02月16日
    浏览(46)
  • ffmpeg入门之Windows开发之二(视频转码)

    添加ffmpeg windows编译安装及入门指南-CSDN博客 的头文件和依赖库如下: main 函数如下: extern \\\"C\\\" { #ifdef __cplusplus #define __STDC_CONSTANT_MACROS #endif } extern \\\"C\\\" { #include libavutil/timestamp.h #include libavformat/avformat.h #include libavutil/mem.h } static void log_packet(const AVFormatContext* fmt_ctx, const AVPacket*

    2024年02月01日
    浏览(53)
  • 如何使用 FFmpeg对视频进行转码和切片

    如何使用 FFmpeg 对视频进行转码和切片 FFmpeg 是一款强大的开源多媒体处理工具,能够处理音频、视频、字幕等多种多媒体数据。下面将介绍如何使用 FFmpeg 进行视频转码和切片。 视频转码 视频转码是指将视频从一种编码格式转换为另一种编码格式。使用 FFmpeg 进行视频转码的

    2024年04月22日
    浏览(55)
  • 项目实战——Qt实现FFmpeg音视频转码器

    本文记录使用 Qt 实现 FFmepg 音视频转码器项目的开发过程。 1、首先创建一个 Qt 项目,选择 MSVC2017 32bit 作为其编译器 2、将 FFmpeg 相关库及源文件拷贝到当前目录下 3、注释 prepare_app_arguments 函数(这里方便后面我们运行时可以指定相应的转码参数) 4、将所需的一些 dll 动态库

    2024年01月23日
    浏览(63)
  • 基于Node.js 和 FFmpeg构建自动化脚本用来转码视频

    这个脚本将监控一个特定的目录,自动转码新添加的视频文件,并将转码后的视频保存到指定目录。 准备环境 安装 Node.js : 访问 Node.js 官网,下载并安装适合你操作系统的 Node.js 版本。 安装 FFmpeg(不清楚的可以看我的上篇博客里有详细的安装步骤) : 对于 Windows 用户,可以从

    2024年03月27日
    浏览(46)
  • ffmpeg + nginx 实现rtsp视频流转m3u8视频流,转码推流(linux)

    FFmpeg即是一款音视频编解码工具,同时也是一组音视频编码开发套件,作为编码开发套件,它为开发者提供了丰富的音视频处理的调用接口。 FFmpeg提供了多种媒体格式的封装和解封装,包括多种音视频编码、多种协议的流媒体、多种多彩格式转换、多种采样率转换、多种码率

    2024年02月09日
    浏览(66)
  • 哔哩哔哩缓存转码|FFmpeg将m4s文件转为mp4|PHP自动批量转码B站视频

    打开ffMpeg官网 选择window=Windows builds from gyan.dev 打开https://www.gyan.dev/ffmpeg/builds/ 这里是上面提取的下载链接如果过期不能用自己去官网下 上面下载的FFmpeg是绿色软件,下载解压到你的常用软件安装目录即可,然后进入bin复制全路径配置下系统环境变量即可 https://github.com/PHP-F

    2024年02月14日
    浏览(57)
  • 20230403在WIN10下通过ffmpeg调用NVIDIA的硬件加速wmv视频转码为MP4格式

    20230403在WIN10下通过ffmpeg调用NVIDIA的硬件加速wmv视频转码为MP4格式 2023/4/3 15:50 最近向学习日语,找到日语发音的视频中,大多数是MP4格式,少量是WMV格式,PR2023貌似不能识别WMV格式。 于是:万能的ffmpeg上场了!   手动指定编解码器 通过 ffmpeg -codecs | findstr \\\"vc1\\\" 查看 vc1 的编解

    2023年04月22日
    浏览(48)
  • windows使用ffmpeg将MP4转m3u8使用参数详解,视频添加水印和压缩

    目录 背景: 一、什么是m3u8: 二、为什么使用m3u8: 三、安装ffmpeg: 1、下载后直接解压: 2、配置环境变量: 四、开始转换m3u8: 五、视频添加水印和压缩: 1. 给视频加上水印图片 2.输出视频的尺寸 3.输出文件的起始文件 4.输出文件的最小大小 和 最大的大小(会影响视频质量

    2024年02月07日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包