ffmpeg 视频分辨率修改 质量压缩

news2025/1/13 13:53:15

随着手机像素的提高,拍摄视频也越来越大,10秒的视频动辄 二三十兆,这给视频传输和播放都带来了 诸多不变。一般都需要 前端或或者后端  对视频进行压缩。由于我这边前端是 H5,所以只能后端进行压缩,

采用主流压缩库采用 ffmpeg 进行,我这边是 nodejs 环境

先说下我这边遇到的坑:

按照之前压缩图片的思路(保持比例):先区分是横图还是竖图

  • 竖图 则 图片宽度 < 图片高度 :原图 1080*1920,限制高度256则:图片宽度 = 1080*256/1920 = 144  则压缩之后 144*256
  • 横图 则 图片宽度 > 图片高度:原图1920*1080, 限制宽度256则: 图片高度 = 1080*256/1920 = 144 则压缩之后  256*144

结果按照上面的思路发现不适用于 视频的(分辨率)压缩我不管从那个角度拍摄视频视的分辨率均为 1920*1080,只是旋转的方向数据有变化而且如果我按照之前处理 图片的思路 则视频压缩出来就会 有概率会 严重变形

:竖屏角度拍摄视频: 分辨率 1920*1080,朝向 -90

        

:颠倒角度拍摄视频: 分辨率 1920*1080,朝向 90

        

:左转角度拍摄视频: 分辨率 1920*1080,朝向 undefined

 :右转角度拍摄视频: 分辨率 1920*1080,朝向 -180

ffmpeg 压缩视频分辨率的正确姿势

视频编码中一般都会使用常用的几个分辨率:手机拍出来的也都是这几个,他的分辨率宽 > 高,衡量是横竖的就只有 方向这个属性,其他比较骚的方式就不考虑了

720P1080P2K4K
分辨率1280*7201920*10802560*14404096*2160
画质高清全高清四倍高清超高清
宽高比例16:916:916:9≈16:9(17:9)

所以我们在压缩视频时候拿到分辨率就看它的宽度就好了:

比如我们的目标分辨率为: 1280*720,源视频分辨率 1920*1080,如果视频宽度大于 1280,我们就按照宽度1280进行压缩,高度-1,他会自己计算,朝向我们不用干预,按照源朝向输出就好了:

 

// file.data 源文件路径
// outPath 为输出路径
const cmd = `ffmpeg -i  ${file.data} -c:v libx264  -vf scale=1280:-1 -crf 28 -c:a copy ${outPath}`;

 按照上面这样,原来30M 的视频可以压缩到2到3M, 而且肉眼看不出 太大差别!

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

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

相关文章

bmp图像文件格式超详解

0 BMP简介 BMP(Bitmap-File)图形文件&#xff0c;又叫位图文件&#xff0c;是Windows采用的图形文件格式&#xff0c;在Windows环境下运行的所有图像处理软件都支持BMP图像文件格式。Windows系统内部各图像绘制操作都是以BMP为基础的。一个BMP文件由四部分组成&#xff1a; B…

手轮脉冲平滑处理笔记

这是一个求手脉倍率((Hw_Control.mult_ratio)与手脉脉冲计数延迟次数即累计过去n次的平均值(Hw_Control.lag_num)之间关系算法的计算过程笔记文档 1、已知 mult_ratio=1时 lag_num=10; mult_ratio=10时 lag_num=20; .mult_ratio==100时 lag_num=30; 以此类推 2、设lag_num…

【目标跟踪】多相机多目标跟踪

文章目录 前言一、计算思路二、代码三、结果 前言 单相机目标跟踪之前博客已经有过基本介绍&#xff0c;本篇博客主要介绍一种多相机目标跟踪的计算方法已知各相机内外参&#xff0c;如何计算共视区域像素投影&#xff1f;废话不多说&#xff0c;见下图。 同一时刻相机A与相机…

创建ROS模型与小机器人地图规划

1、打开自己的VM系统 2、安装小机器人的安装包&#xff0c;输入如下命令&#xff0c;回车输入密码(自己设的)&#xff1a; sudo apt install ros-noetic-turtlebot3-simulations ros-noetic-turtlebot3-slam ros-noetic-turtlebot3-navigation 提示我之前安装过了 3、用rosla…

ansible:如何在centos 7上重新启动auditd服务得到关于依赖的错误

在我的剧本中&#xff0c;我有一个更新 audit.rules 的任务&#xff0c;然后通知应该重新启动 auditd 服务的处理程序。 task:- name: 6.6.7 - audit rules configurationtemplate: srcX/ansible/templates/auditd_rules.j2dest/etc/audit/rules.d/audit.rulesbackupyesownerr…

在线图表编辑工具Draw.io本地部署并结合内网穿透实现远程协作办公

前言 提到流程图&#xff0c;大家第一时间可能会想到Visio&#xff0c;不可否认&#xff0c;VIsio确实是功能强大&#xff0c;但是软件为收费&#xff0c;并且因为其功能强大&#xff0c;导致安装需要很多的系统内存&#xff0c;并且是不可跨平台使用。所以&#xff0c;今天给…

ChatGPT | Team套餐来了,每人 25美元,你怎么看?

最近&#xff0c;ChatGPT 在原有的plus会员的基础上 加了一个Team套餐 价格要更贵一些 收费 每人每月 25 美元 套餐包含 Plus 中的所有内容&#xff0c;以及&#xff1a; GPT-4 和 DALLE、浏览、高级数据分析等 创建 GPT 并将其与工作区共享 用于工作区管理的管理控制台 保证不…

shrio漏洞

sudo apt install tomcat9//安装tomcat9sudo systemctl status tomcat9//查看安装状态 编辑配置文件 sudo nano /etc/tomcat9/tomcat-users.xml 编辑配置文件&#xff0c;设置密码 sudo systemctl restart tomcat9 重启生效 访问 Tomcat 管理页面&#xff1a;在浏览器中输入…

网络安全B模块(笔记详解)- 网络爬虫渗透测试

ARP协议渗透测试 1.进入渗透机场景BT5中的/root目录,完善该目录下的arp_spoof.py文件,填写该文件当中空缺的Flag1字符串,将该字符串作为Flag值(形式:Flag1字符串)提交;(arp_spoof.py脚本功能见该任务第6题) 根据缺少的发现是要time模块 Flag:time 2.进入渗透机场景B…

独享静态代理IP在海外市场调研中的独特优势

独享静态代理IP在海外市场调研中扮演着至关重要的角色&#xff0c;提供了一系列无可比拟的优势。独享静态代理IP的稳定性和可靠性对于长期的市场调研至关重要&#xff0c;它保证了连接的持续性和数据的准确性。通过这些方面的综合优势&#xff0c;独享静态代理IP成为海外市场调…

生成学习全景:从基础理论到GANs技术实战

本文全面探讨了生成学习的理论与实践&#xff0c;包括对生成学习与判别学习的比较、详细解析GANs、VAEs及自回归模型的工作原理与结构&#xff0c;并通过实战案例展示了GAN模型在PyTorch中的实现。 关注TechLead&#xff0c;分享AI全维度知识。作者拥有10年互联网服务架构、AI产…

Visual Studio Code 连接远程服务器方法

1、输入用户名和服务器ip连接远程服务器 2、选择配置文件 配置文件路径&#xff1a;C:\Users\Administrator\.ssh\config config的内容大致如下&#xff1a; Host 192.168.134.3HostName 192.168.134.3User zhangshanHost 192.168.134.3HostName 192.168.134.3User lisiHost…

Open CASCADE学习|一种快速定位缺失的链接库的方法

OCCT代码中&#xff0c;缺少链接库一般报错LNK2019、LNK1120等&#xff0c;如下表所示。该错误说明中提供了类名及成员函数&#xff0c;这是找到缺少的链接库的线索。 严重性 代码 说明 项目 文件 行 禁止显示状态 详细信息 错误 LNK2019 无法解析的外部符号 "p…

C/C++动态内存管理

文章目录 前言1.C/C内存分布2.C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free3.C内存管理方式3.1 new/delete操作内置类型3.2 new和delete操作自定义类型 4. operator new与operator delete函数4.1 operator new与operator delete函数 5. new和delete的实现原…

Python实用小工具(4)——邮件轰炸机,给朋友搞点乐子(附源码+exe文件)

欢迎来到MatpyMaster&#xff01;今天我们将使用Python来批量发送邮件&#xff0c;让你的邮件推送变得更加高效。废话不多说&#xff0c;直接开搞&#xff01;使用声明&#xff1a; 请确保你的邮箱开启了SMTP服务&#xff0c;并获取了授权码。 选择合适的发送间隔&#xff0c;…

创建mysql普通用户

一、创建mysql普通用户的原因&#xff1a; 权限控制&#xff1a;MySQL的权限系统允许您为每个用户分配特定的权限。通过创建普通用户&#xff0c;您可以根据需要为每个用户分配特定的数据库和表权限&#xff0c;而不是将所有权限授予一个全局管理员用户。这有助于提高数据库的…

2024年华夏银行总行社会招聘公告

信息科技部自动化测试与开发类岗  工作地点&#xff1a;北京市 学历要求&#xff1a;本科及以上 工作职责 1、持续推进自动化测试的开展&#xff0c;提升自动化测试覆盖率,包括方案设计、测试分析、测试执行和总结等。 2、负责自动化测试工具和框架搭建&#xff0c;根据…

关于报错 curl: (56) Recv failure: Connection reset by peer

curl ip没问题 curl localhost 则报错 curl: (56) Recv failure: Connection reset by peer 出现这个报错有很多原因, 其中之一就是terminal代理 而关闭代理应用之后, 其实由于配置的终端都是 export指定的代理 所以导致还是一直报错. 通过 curl -v 可以发现 指向了代理ip和…

关于网络安全,你了解多少?

随着互联网技术的飞速发展&#xff0c;网络安全问题日益凸显。国际标准化组织&#xff08;ISO&#xff09;对计算机网络安全做出了明确定义&#xff1a;为保护数据处理系统而采取的技术和管理的安全措施&#xff0c;旨在保护计算机硬件、软件和数据免受偶然和故意原因造成的破坏…

Apipost IDEA插件,真的超好用

IDEA是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它可以帮助开发人员更加高效地编写、调试和部署软件应用程序。我们在编写完接口代码后需要进行接口调试等操作&#xff0c;一般需要打开额外的调试工具。 今天给大家介绍一款IDEA插件&#xff1a;Api…