FFmpeg视频转码关键参数详解

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.mp4ffmpeg -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 subprocessinput_file = 'input.mp4'
output_file = 'output.mp4'
frame_rate = 30command = ['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 

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

分辨率Bitrate10分钟的视频
320p 320×240180 kbit/s~13 MB
360p 640×360300 kbit/s~22 MB
480p 864×480500 kbit/s~37 MB
576p 720x576850 kbit/s~63 MB
720p 960×7201000 kbit/s~75 MB

5 视频文件转gif图像

-ss开始截图时间(秒)截图开始时间越接近篇尾,所花费的时间就越长。
-t截图时长(秒)省略-ss和-t转换整个视频文件。
-i输入文件
-y覆盖旧文件
-sgif图片的宽和高
-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。

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React Antd Form.List 组件嵌套多级动态增减表单 + 表单联动复制实现

Antd Form.List 组件嵌套多级动态增减表单 表单联动复制实现 一、业务需求 有一个页面的组件,其中一部分需要用到动态的增减 复制表单,然后就想起 了使用 Antd 的 Form.List 去完成这个功能。 这个功能的要求是: 首先是一个动态的表单&…

SQL-每日一题【178.分数排名】

题目 表: Scores 编写 SQL 查询对分数进行排序。排名按以下规则计算: 分数应按从高到低排列。 如果两个分数相等,那么两个分数的排名应该相同。 在排名相同的分数后,排名数应该是下一个连续的整数。换句话说,排名之间不应该有空缺的数字。 …

Linux:LAMP搭建(全源码包安装)

LAMP 就是 Linux Apache Mysql PHP/Python 目录 Linux安装 Apache安装 Mysql安装 安装PHP 安装PHP扩展包 编译安装PHP PHP 添加优化模块 测试网页协同工作 Linux安装 虚拟机安装 (1条消息) VMware:安装centos7_鲍海超-GNUBHCkalitarro的博客-CSD…

Mybatis-Plus学习1

mybatis-plus需要两个依赖&#xff0c;一个lombok&#xff0c;一个mybatis-plus <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version> </dependency> …

路由协议基本术语

文章目录 1、自治系统AS2、EGP和IGP3、度量标准和度量值4、管理距离5、路由协议与路由算法6、路由环路问题 1、自治系统AS Internet中&#xff0c;自治系统就是处于同一个管理机构&#xff08;如一个ISP&#xff09;控制下的路由器和网络群组 在同一个自治系统中的所有路由器…

Learn Mongodb DB数据库部署 ②

作者 : SYFStrive 博客首页 : HomePage &#x1f4dc;&#xff1a; PHP MYSQL &#x1f4cc;&#xff1a;个人社区&#xff08;欢迎大佬们加入&#xff09; &#x1f449;&#xff1a;社区链接&#x1f517; &#x1f4cc;&#xff1a;觉得文章不错可以点点关注 &#x1f44…

集合专题----List篇

1、Collection常用方法 package com.example.collection.Collection;import java.util.ArrayList; import java.util.List;public class Collection03 {public static void main(String[] args) {List list new ArrayList();//接口可以指向实现该接口的类//add:添加单个元素l…

快消EDI:联合利华Unilever EDI需求分析

联合利华&#xff08;Unilever&#xff09;是一家跨国消费品公司&#xff0c;总部位于英国和荷兰&#xff0c;在全球范围内经营着众多知名品牌&#xff0c;涵盖了食品、饮料、清洁剂、个人护理产品等多个领域。作为一家跨国公司&#xff0c;联合利华在全球各地都有业务和生产基…

内网安全:内网穿透详解

目录 内网穿透技术 内网穿透原理 实验环境 内网穿透项目 内网穿透&#xff1a;Ngrok 配置服务端 客户端配置 客户端生成后门&#xff0c;等待目标上线 内网穿透&#xff1a;Frp 客户端服务端建立连接 MSF生成后门&#xff0c;等待上线 内网穿透&#xff1a;Nps 服…

系列一、RocketMQ入门

一、MQ概述 1.1、MQ简介 MQ&#xff0c;Message Queue&#xff0c;是一种提供消息队列服务的中间件&#xff0c;也称为消息中间件&#xff0c;是一套提供了消息生产、存储、消费全过程的API软件系统。消息&#xff1a;消息即数据&#xff0c;一般消息的体量不会很大。 1.2、M…

从零开始 Spring Boot 52:@Embedded 和 @Embeddable

从零开始 Spring Boot 52&#xff1a;Embedded 和 Embeddable 图源&#xff1a;简书 (jianshu.com) 这篇文章会介绍Embedded和Embeddable两个注解在 JPA 中的用法。 简单示例 先看一个示例&#xff1a; AllArgsConstructor Builder Data Entity Table(name "user_stu…

【小沐学Unity3d】Unity播放视频(VideoPlayer组件)

文章目录 1、简介2、脚本播放示例3、界面播放示例3.1 2d界面全屏播放3.2 2d界面部分区域播放3.3 3d模型表面播放 结语 1、简介 使用视频播放器组件可将视频文件附加到游戏对象&#xff0c;然后在运行时在游戏对象的纹理上播放。 视频播放器 (Video Player) 组件: 属性功能Sourc…