Node.js服务端使用ffmpeg压缩视频处理技巧
yuyutoo 2025-01-06 16:13 4 浏览 0 评论
在Node.js中,我们可以使用fluent-ffmpeg进行视频的合并、拼接、修改、转码、压缩等操作。网上的资料有很多,但是大部分是英文的,对于普通开发者来说,要轻松地了解使用方法还是很有难度的。
智趣配音Pro小程序是一款语音合成工具,受手机限制想要保存文件到相册,就必须以视频的格式才可以,那么就会需要对音频文件进行转码,并保存成视频文件,然后再下载到手机相册里。转码后的视频文件大小对于用户体验来说是相当重要的,在尽量保证不损失音质的情况下,压缩视频文件大小能显著提升用户下载速度。本文将简单介绍如何对音频进行转码并压缩视频。
生成视频文件步骤
- 我们需要准备一张图片和一段音频文件。
- 通过addInputs属性将图片和音频拼接。
- 通过size属性设置视频文件的大小。
- 通过videoBitrate设置视频码率。
- 通过videoCodec设置视频格式。
- 通过audioBitrate设置音频码率。
- 通过fps设置视频帧数。
通过上面步骤生成的文件大小会比较大,我们需要对视频文件大小进一步优化,最基础的办法是把码率数值降低,如果视频文件不需要播放动画只是一张图片的话,可以把FPS数值也降低改成1(默认为25)。
上面没提到的loop属性,需要指出的是这里是采用图片文件和音频文件进行拼接的视频,如果不设置视频长度,合成后的视频文件默认只有1秒,所以需要自行获取音频的长度,然后去循环图片的长度,保证视频长度和音频是一致。
如何进一步优化视频文件?
尝试了上面修改码率的方法后,发现最后码率改得再小,视频文件依然压缩有限,于是在网上搜索了参考了下别人的方案,发现比较靠谱的压缩方案是通过
ffmpeg的pass属性进行二次压缩。
如何实现呢?请接着往下看:
重点在outputOptions参数,通过pass属性对合成的视频进行2次编码,最后得到的文件能够有很大的压缩提升。
有兴趣的朋友可以参考上面的代码自己动手试一试,也可以点击下方小程序卡片访问体验一下。
相关推荐
- asp.net常考面试题(aspnet题库)
-
asp.net常考面试题一,列举ASP.Net页面之间传递值的几种方式?1,使用QueryString,如:......?id=1;response.Redirect()......2,使用Sessi...
- 在Windows系统搭建.NET Core环境并创建运行ASP.NET网站
-
微软于6月27日在红帽DevNation峰会上正式发布了.NETCore1.0、ASP.NET1.0和EntityFrameworkCore1.0,其将全部支持Windows、OSX和...
- ASP.NET Core API 编写简单接口,连接数据库
-
在ASP.NETCore中连接数据库需要以下步骤:...
- ASP.NET Core 9.0的7个方面重大更新!
-
我是编程乐趣,一个10年.Net开发经验老程序员,点击右上方“关注”,每天为你分享开源项目和编程知识。随着.Net9发布,ASP.NETCore9.0也迎来重大更新,主要体现在以下7个方面。...
- ASP.NET Core 健康监控:从入门到实战
-
在ASP.NETCore中,...
- 如何在服务器端使用ASP.NET Core 2创建甘特图?
-
本教程为您提供有关如何在服务器端使用ASP.NETCore2创建Gantt的分步说明。为了组织与数据库的通信,使用了实体框架核心。该应用程序是在VisualStudio2017的帮助下构建的。...
- 提高 ASP.NET Web 应用性能的 24 种方法和技巧
-
在这篇文章中,将介绍一些提高ASP.NETWeb应用性能的方法和技巧。众所周知,解决性能问题是一项繁琐的工作,当出现性能问题,每个人都会归咎于编写代码的开发人员。以下为译文那性能问题到底该如何解...
- ASP.NET Core跨平台技术内幕(net core 跨平台)
-
ASP.NETCore设计初衷是开源跨平台、高性能Web服务器,其中跨平台特性较早期ASP.NET是一个显著的飞跃,.NET现可以理直气壮与JAVA同台竞技,而ASP.NETCore的高性能特性更...
- ASP.NET Core Blazor 的部署(asp.net core官方文档)
-
前言:在部署时踩了不坑,现总结一下,给有需要人避坑,也作为自己的一个笔记,便于以后查阅及参考。摘要:采用ASP.NETCore自托管,Nginx反向代理。一、ASP.NETCoreBlazo...
- Windows Forms应用程序中集成一个ASP.NET API服务
-
在WindowsForms应用程序中集成一个ASP.NETAPI服务可以是一种有效的方式来为桌面应用程序提供网络服务能力。这种方式特别适用于需要在桌面环境中运行的小型服务。我们可以利用HttpLi...
- 为什么网站服务器会出现500错误代码?该怎么修复?
-
网站服务器出现500错误代码是什么原因?怎么解决?在运营网站的过程中,我们难免会遇见各种问题,比如最常见的500InternalServerError内部服务器500错误代码,只要是500或...
- 使用 Nginx 在 Linux 上托管 ASP.NET Core
-
先决条件使用具有sudo特权的标准用户帐户访问Ubuntu16.04服务器。...
- php语言是asp还是jsp(php用的是什么语言)
-
PHPPHP,HypertextPreprocessor,最初在95年问世(那时以前叫PersonalHomePage)。PHP最初是制作动态网页的服务器端脚本语言,但现在PHP已经可以作为co...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- ASP.NET Core EFCore 属性配置与DbContext 详解
- asp.net常考面试题(aspnet题库)
- 在Windows系统搭建.NET Core环境并创建运行ASP.NET网站
- ASP.NET Core 中的最佳 ORM 工具比较:Entity Framework 与 Dapper
- ASP.NET Core API 编写简单接口,连接数据库
- ASP.NET Core 9.0的7个方面重大更新!
- ASP.NET Core 健康监控:从入门到实战
- 如何在服务器端使用ASP.NET Core 2创建甘特图?
- 提高 ASP.NET Web 应用性能的 24 种方法和技巧
- ASP.NET Core跨平台技术内幕(net core 跨平台)
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)