关于ffmpeg height not divisible by 2的错误

  在我们线上视频生产过程中,我们用ffmpeg对视频做了resize,讲原有的分辨率resize到1280p,使用了参数 -vf "scale=1280:-1",作用是将原始视频宽度缩放成1280,-1是指高度等比例缩放。 之前一直运行的好好的,直到我们出现了一种新的视频分辨率,结果就运行不了,如下图:
在这里插入图片描述
  排查发现我们出现了一部分原始分辨率为3312x3040的输入视频,当宽缩放成1280的时候,高恰好等比例缩放成为了1175,而奇数分辨率对部分视频编码而言是一个非法参数 ,原因主要如下:

FFmpeg 默认不允许生成视频的分辨率宽度或高度为奇数主要与视频压缩标准和编解码过程中的某些算法要求有关。许多视频编码标准,例如H.264和H.265,使用了块为基础的编码方法。这些块通常是宽度和高度都是2的倍数的矩形(例如,4x4, 8x8, 16x16等)。当编码器处理视频帧时,如果帧的宽度或高度是奇数,将不能够将图像完整地分割成标准的块,这可能会导致编码过程中出现问题。例如,如果有一个奇数宽度的视频帧,最右边会有一个无法形成完整块的列像素。这样的非标准块需要编码器进行额外的处理,可能会降低编码效率,增加复杂性,并可能导致兼容性问题。**

  解决方案当然很简单,那就是将分辨率强行指定成偶数即可,在当我思索难道要放弃-1这个好用的自适应参数,在指定宽为1280时,自己去计算出一个高来的时候。突然发现了-2这个参数。
在ffmpeg的scale 参数中,可以使用 -1 和 -2 这样来等比例缩放视频大小,但二者略有差异,建议使用-2而不是-1,之前我们就是使用了-1才出现的问题,二者的具体差异如下:

  • -1scale 过滤器中用作自动计算宽度或高度的占位符,同时保持源视频的宽高比不变。例如,如果你只指定宽度为1280,然后将高度设置为-1,FFmpeg 会计算出一个高度值,使新视频保持原始视频的比例。

    ffmpeg -i input.mp4 -vf "scale=1280:-1" output.mp4
    
  • -2 的作用与 -1 类似,也是用于自动计算另一个尺寸,同时保持宽高比。但 -2 的特殊之处在于,它会确保计算出的宽度或高度是偶数,这是为了满足某些视频编码器的要求,它们需要偶数的分辨率尺寸。这对于编码像H.264这样的视频时特别重要,因为(如前所述)这些编码器使用基于块的编码算法,其要求块的尺寸(通常是16×16像素或其它偶数尺寸)能够完全适应视频帧的尺寸。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

储能技术发展

一、政策背景 “十三五”是我国储能产业化发展的起点。自“十四五”之后,各类储能支持政策更是以极快的速度不断更新完善。 2023年1月17日,工业和信息化部等六部门发布了《关于推动能源电子产业发展的指导意见》,其中明确提出要在2025年实现…

吴恩达prompt 笔记2:迭代提示开发(Iterative Prompt Develelopment)

1 前言 我们很难在初次尝试中就设计出最佳的提示,因此需要根据ChatGPT的反馈进行分析,分析输出具体在哪里不符合期望,然后不断思考和优化提示。如果有条件的话,最好是利用批量的样本来改善提示,这样可以对你的优化结…

代码随想录阅读笔记-哈希表【三数之和】

题目 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a b c 0 ?请你找出所有满足条件且不重复的三元组。 注意: 答案中不可以包含重复的三元组。 示例: 给定数…

Python之Web开发中级教程----搭建虚拟环境

Python之Web开发中级教程----搭建Web框架二 搭建虚拟环境 虚拟环境的作用 虚拟环境可以搭建独立的python运行环境, 使得单个项目的运行环境与其它项目互不影响. 搭建虚拟环境 (1)安装 sudo pip install virtualenv sudo pip install virtualenvwra…

一起学数据分析_2

写在前面:代码运行环境为jupyter,如果结果显示不出来的地方就加一个print()函数。 一、数据基本处理 缺失值处理: import numpy as np import pandas as pd#加载数据train.csv df pd.read_csv(train_chinese.csv) df.head()# 查看数据基本…

Vue3-响应式基础:单文件和组合式文件

单文件&#xff1a;html <!DOCTYPE html> <html> <head><title>响应式基础</title> </head> <body><div id"app" ><!-- dynamic parameter:同样在指令参数上也可以使用一个 JavaScript 表达式&#xff0c;需要包…

简易版 RPC 框架实现 1.0 -http实现

RPC 是“远程过程调用&#xff08;Remote Procedure Call&#xff09;”的缩写形式&#xff0c;比较通俗的解释是&#xff1a;像本地方法调用一样调用远程的服务。虽然 RPC 的定义非常简单&#xff0c;但是相对完整的、通用的 RPC 框架涉及很多方面的内容&#xff0c;例如注册发…

离散时间傅里叶变换和离散傅里叶变换

离散时间傅里叶变换和离散傅里叶变换 { X ( k ) DFT [ x ( n ) ] ∑ n 0 N − 1 x ( n ) W N n k k 0 , 1 , . . . , N − 1 x ( n ) IDFT [ X ( k ) ] 1 N ∑ n 0 N − 1 x ( n ) W N − n k n 0 , 1 , . . . , N − 1 \begin{cases} X(k)\textbf{DFT}[x(n)]\sum\limi…

解决:IDEA编译Java程序时报编译失败

1、问题展示&#xff1a; 2、解决方法&#xff1a;

Magical Combat VFX

这个包包含30个可供游戏使用的VFX,有各种口味,为您的游戏增添趣味! 所有VFX都经过了很好的优化,可以在所有平台上使用。 这个包特别有一堆闪电魔法,有两种主要的变体,一种是深色的,另一种是浅色的。但它也提供了一系列其他视觉效果,如神圣咒语、音乐主题等等! 我们提供…

【CSP】2021-09-2 非零段划分 索引+递推/差分+前缀和

2021-09-2 非零段划分 索引递推/差分前缀和 2021-09-2 非零段划分 索引递推/差分前缀和索引递推思路差分前缀和思路遇到的问题索引递推完整代码差分前缀和完整代码 2021-09-2 非零段划分 索引递推/差分前缀和 一开始写的时候没有发现直接从a数组求q的规律&#xff0c;怎么也想…

NCV8705MTADJTCG稳压器芯片中文资料规格书PDF数据手册引脚图图片价格功能

产品概述&#xff1a; NCV8705 是一款低噪音、低功耗和低泄漏线性电压稳压器。该器件具有卓越的噪音和 PSRR 规格&#xff0c;适用于使用视频接收器、成像传感器、音频处理器或需要外部洁净电源的任何部件的产品。NCV8705 使用创新的自适应接地电流电路 可确保轻负载调节下的超…

基于DFA敏感词查询的算法简析

基于DFA敏感词查询的算法简析 1.背景 项目中需要对敏感词做一个过滤&#xff0c;首先有几个方案可以选择&#xff1a; a.直接将敏感词组织成String后&#xff0c;利用indexOf方法来查询。 b.传统的敏感词入库后SQL查询。 c.利用Lucene建立分词索引来查询。 d.利用DFA算法…

3.python安装Selenium框架

1. 命令安装 pip install selenium下载慢,可以换源: pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/查看是否换源成功 pip config get global.index-url安装好后,查看版本信息: pip show selenium2.下载对应的浏览器驱动 https://registry.npmm…

【Elasticsearch】windows安装elasticsearch教程及遇到的坑

一、安装参考 1、安装参考&#xff1a;ES的安装使用(windows版) elasticsearch的下载地址&#xff1a;https://www.elastic.co/cn/downloads/elasticsearch ik分词器的下载地址&#xff1a;https://github.com/medcl/elasticsearch-analysis-ik/releases kibana可视化工具下载…

Vue2 引入使用ElementUI详解

目录 1 安装2 引入2.1 全局引入2.1.1 引入2.1.2 使用 2.2 按需引入2.2.1 引入2.2.2 使用 3 总结 1 安装 推荐使用 npm 的方式安装&#xff0c;它能更好地和 webpack打包工具配合使用。&#xff08;本项目使用安装方式&#xff09; npm i element-ui -S也可以使用其他的包管理…

Notepad++从文件夹查找文本内容

目录 一、背景二、Notepad搜索2.1 测试用例2.2 操作说明 一、背景 在日常的办公、学习或编程中&#xff0c;我们时长会遇到需要在大量文件中搜索特定文本内容的情况&#xff1a; 无论是快速定位某个项目中的代码片段&#xff1b;还是检索文档资料库中的相关信息等。 掌握如何…

蓝桥杯:模拟、枚举

目录 引言一、修剪灌木二、特殊年份三、刷题统计 引言 本篇文章主要介绍蓝桥杯的模拟和枚举的题目&#xff0c;这种题在 B B B 组还是比较简单的&#xff0c;后续也会一直往里加新的真题&#xff0c;加油&#xff01; 一、修剪灌木 标签&#xff1a;第十三届蓝桥杯省赛C B组…

音乐创作利器FL Studio21水果软件助你轻松实现音乐创意

音乐创作利器——FL Studio21水果软件&#xff0c;让你的音乐梦想起航&#xff01; 副标题&#xff1a;一款强大的电脑数码编曲软件&#xff0c;助你轻松实现音乐创意&#xff01; 一、FL Studio21水果软件——音乐制作的得力助手** 在音乐创作的道路上&#xff0c;有一款得心…

uniapp样式穿透修改uview的按钮button图标

需求&#xff1a; 想给按钮icon和text改字体颜色&#xff0c;结果发现图标颜色并没有改变 .u-button{width: 300rpx;background-color: aliceblue;color: #aaaa7f;margin-top: 20rpx; }接下来用样式穿透解决 1、首先&#xff0c;给UI组件包裹一层view <view class"t…