FFmpeg视频转码参数详解

news2024/9/30 11:37:37

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

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

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

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

命令行使用示例如下:

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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/687390.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云docker启动xxljob,部署自己的定时任务

本次安装版本xxl-job-admin:2.3.0 一:创建xxl-job数据库的各种表 作者官方地址 下载sql执行 二:docker拉取xxl-job镜像 docker pull xuxueli/xxl-job-admin:2.3.0 三:docker启动xxl-job服务 docker run -e PARAMS"--spring.datasour…

用C语言实现经典游戏——贪吃蛇

目录 1.游戏实现思想 (1)定义蛇对象 (2)食物对象 (3)分数: (4)初始化蛇 (5)初始化食物 (6)修改控制台光标位置 &…

Spring Data JPA 报 HOUR_OF_DAY: 0 -> 1异常的解决过程和方案

在进行数据查询时,控制台报了Caused by: com.mysql.cj.exceptions.WrongArgumentException: HOUR_OF_DAY: 0 -> 1异常,查询得知:这是由于查mysql库,转换类型为datetime类型的字段引起的。 网上的解决方案有多种,大…

坐标系转换QGIS插件GeoHey

最近要将面要素(GCJ02火星坐标系)转WGS84,用程序转太麻烦了,找了半天没找到合适的。 插件非常好用!!! 在QGIS中,由极海(GeoHey)团队提供GeoHey Toolbox插件…

Linux_清理docker容器的log

最近发现服务器硬盘空间满了,就排查了一番,发现有docker容器的log文件占用太多,所以要做一下清理。 首先是要找到docker容器log文件的储存位置。 1、首先在执行了一下 df -Th 命令,发现根目录满了。 2、然后去到根目录下&#xff…

Android项目中接入 Lint代码规范

一、概述 Android Studio 提供了一个名为 Lint 的代码扫描工具,可帮助开发者发现并更正代码结构质量方面的问题,并且无需您实际执行应用,也不必编写测试用例。系统会报告该工具检测到的每个问题并提供问题的描述消息和严重级别,以便开发者可以快速确定需要优先进行的关键改…

Linux下vim的常见命令操作(快速复查)

目录 前言1、Vim常用操作1.1、环境参数1.2、方向1.3、插入命令1.4、定位命令1.5、删除命令1.6、复制和剪切命令1.7、替换和取消命令1.8、搜索和搜索替换命令1.9、保存和退出命令1.10、其他命令1.11、可视模式 前言 本篇文章不面向新手,全文几乎都是命令,…

【Redis】多级缓存之缓存数据同步策略与Canal

目录 一、数据同步策略 1.设置有效期 2.同步双写 3.异步通知 二、Canal 三、监听Canal 一、数据同步策略 缓存数据同步的常见方式有三种: 1.设置有效期 给缓存设置有效期,到期后自动删除。再次查询时更新,他简单、方便,但…

H5学习 (一)--创建工程

文章目录 一、下载安装VS Code二、创建新文件1. 使用cmd N,创建一个文件2. 点击 Select a language,改变文件的编码类型3. 选择HTML 语言模式4. 输入 !按回车键,就会自动生成一个HTML模版5. 右击项目,选择 “Open In Default Bro…

交叉熵、Focal Loss以及其Pytorch实现

交叉熵、Focal Loss以及其Pytorch实现 本文参考链接:https://towardsdatascience.com/focal-loss-a-better-alternative-for-cross-entropy-1d073d92d075 文章目录 交叉熵、Focal Loss以及其Pytorch实现一、交叉熵二、Focal loss三、Pytorch1.[交叉熵](https://pyto…

浅谈商业智能BI的过去、现在和未来

互联网的大发展也在引领各行各业的改变,包括商业智能BI,商业智能BI就是在数字化时代下飞速发展的。商业智能BI与互联网发展的同时,人工智能、大数据、区块链、云计算等新一代信息化、数字化技术也开始进行加速商业智能BI发展及应用&#xff0…

vmareWorkstation-提取vmdk-文件系统

参考博文-CSDN-BugM(作者)-将vmdk作为硬盘挂载到另一个linux系统的虚拟机上 一、以管理员身份运行wmware-workstation 二、将目的vmdk文件映射到一个linux虚拟机上 选择左下方的添加按钮 添加的文件的路径可以查看需要添加的虚拟机的情况,如…

PXE批量网络装机、PXE无人值守安装

目录 一、批量部署的优点 二、基本部署过程 三、部署pxe网络体系要求 四、搭建PXE远程安装服务器的步骤 1.安装并启用TFTP服务 2.安装并启用dhcp服务 3.准备linux内核、初始化镜像文件 4.准备PXE引导程序 5.安装FTP服务,准备CentOS7安装源 6.配置启动菜单文…

ATA-3090功率放大器在新能源汽车上的应用

随着全球对环境保护和节能减排的重视,新能源汽车正逐渐成为汽车市场的主流。而功率放大器作为电子控制系统中的关键部件之一,也扮演着越来越重要的角色。那么,功率放大器在新能源汽车上的应用有哪些呢? 图:新能源汽车 …

数字IC前端学习笔记:仲裁轮询(五)

相关文章 数字IC前端学习笔记:LSFR(线性反馈移位寄存器) 数字IC前端学习笔记:跨时钟域信号同步 数字IC前端学习笔记:信号同步和边沿检测 数字IC前端学习笔记:锁存器Latch的综合 数字IC前端学习笔记&am…

聚焦云原生安全|安全专家揭秘如何强化容器威胁检测能力

4月15日,由极狐主办的“当效率遇上安全 一起开启质效升级之旅”活动顺利开展。 作为国内云原生安全领导厂商,安全狗受邀出席此次活动。 厦门服云信息科技有限公司(品牌名:安全狗)成立于2013年,致力于提供云…

【中危】BootCDN 投毒风险

漏洞描述 BootCDN是免费的前端开源项目 CDN 加速服务,通过同步cdnjs仓库,提供了常用javascript组件的CDN服务。 多个开发者发现在特定请求中(如特定Referer及移动端user-agent)会返回包含指向union.macoms.la地址的恶意js文件&a…

快速提取地形图坐标到Revit建立场地模型?

一、快速提取地形图坐标到Revit建立场地模型? 1、打开免费三维地形软件: 2、定位项目位置: 3、按步骤提取坐标及高程: 4、保存为csv文件格式,打开CSV文件,删除第一行: 5、打开坐标转换软件,按步…

python3套接字编程之socket和socketserver(TCP和UDP通信)

socket和socketserver是python3中socket通信模块,关于其使用做如下总结。 目录 1.socket 1.1模块引入 1.2套接字获取 1.3套接字接口 1.3.1 服务端 1.3.2 客户端套接字函数 1.3.3 公共套接字函数 1.3.4 面向锁的套接字方法 1.3.5 面向文件的套接字的函数 …

Python注释解密、变量大揭秘,数据类型轻松入门!

文章目录 前言注释单行注释多行注释 变量数据类型1.整型(int)2.浮点型(float)3.布尔型(bool)4.字符串(str)5.列表(list)6.元组(tuple)…