nodeJs 实现视频的转换(超详细教程)
前段时间拿到一个视频是4k的,没法播放,于是通过 node.js 和 ffmpeg 实现了视频的转换。在win10 系统下实现。
所需工具
node 16.19 直接安装
ffmpeg-5.1.1-essentials_build 解压后重名 ffmpeg 放到C盘 然后配置下环境变量
Git-2.42.0.2-64-bit 直接安装

安装完
建一个demo 的文件夹,
demo文件下建一个node-server
node-server文件下建一个server.js
// 服务器端代码(Node.js)const express = require('express');
const path = require('path');const app = express();
const { exec } = require('child_process');
const port = 3020;// 配置静态资源文件夹
// app.use(express.static('./video'));const assetsDir = path.join(__dirname, '../video');
// 将视频转换为1080p 函数
/*** * @param {*} inputPath 原视频路径* @param {*} outputPath 转换后存放路径* ffmpeg: FFmpeg 是一个开源的音视频处理工具,可以用于录制、转换以及流式传输音视频内容。该命令表示要执行FFmpeg程序。*-i ${inputPath}: 这是一个选项参数,用于指定输入文件。${inputPath}是一个变量,用于指定输入文件的路径。这里将输入文件的路径作为变量传递给 -i 选项。*-s 1920x1080: 这是一个选项参数,用于设置输出视频的分辨率。1920x1080指定了输出视频的宽度和高度为1920像素和1080像素,即高清视频。*-c:v libx264: 这是一个选项参数,用于指定视频编解码器。libx264是一个开源的H.264视频编码器,用于压缩视频。*-crf 24: 这是一个选项参数,用于设置视频的质量。CRF代表“Constant Rate Factor”,值越低,视频的质量越高,但文件大小也越大。这里的24表示相对较高的质量。* ${outputPath}: 这是输出文件的路径,${outputPath}是一个变量,用于指定输出文件的路径。*/function convertVideoTo1080p(inputPath, outputPath) {const command = `ffmpeg -i ${inputPath} -s 1920x1080 -c:v libx264 -crf 24 ${outputPath}`;exec(command, (error, stdout, stderr) => {if (error) {console.error(`执行出错: ${error}`);return;}console.log('转换成功');});
}//执行转换
convertVideoTo1080p(assetsDir + '\\demo_4K.mp4',assetsDir + '\\demo_1080p.mp4');// 截取的时间点(第41秒)截取一张图片当封面用
const timePoint = 41;/*** 截取视频一帧拿到图片* @param {*} videoFilePath 原视频路径* @param {*} outputImagePath 图片存放*/function extractImageFromVideo(videoFilePath, outputImagePath) {// FFmpeg命令const ffmpegCommand = `ffmpeg -i ${videoFilePath} -ss ${timePoint} -vframes 1 ${outputImagePath}`;// 执行FFmpeg命令exec(ffmpegCommand, (error, stdout, stderr) => {if (error) {console.error('执行命令时出错:', error);return;}console.log('截取完成,已保存为 ' + outputImagePath);});}extractImageFromVideo(assetsDir + '\\demo_4K.mp4',assetsDir + '\\demo_cover.png');app.listen(port, () => {console.log(`Server is running on http://localhost:${port}`);
});
再建一个package.json文件
{"dependencies": {"child_process": "^1.0.2","express": "^4.18.2","qrcode": "^1.5.3"}
}
demo 文件夹下再建一个video文件夹 里面放一个视频 命名为demo_4k.mp4。
再demo 文件下打开git 执行
npm install
node node-server/server.js
然后等待结果

我的视频有300m,大概10分钟转换成功

完活
如果图省事 就下载我的资源吧,https://download.csdn.net/download/weixin_37742709/89071492
相关文章:
nodeJs 实现视频的转换(超详细教程)
前段时间拿到一个视频是4k的,没法播放,于是通过 node.js 和 ffmpeg 实现了视频的转换。在win10 系统下实现。 所需工具 node 16.19 直接安装 ffmpeg-5.1.1-essentials_build 解压后重名 ffmpeg 放到C盘 然后配置下环境变量 Git-2.42.0.2-64-bit 直接…...
Transformer - model architecture
Transformer - model architecture flyfish Transformer总体架构可分为四个部分: 输⼊部分 输出部分 编码器部分 解码器部分 输入部分 输出部分 输⼊部分包含: 源嵌⼊层和位置编码 ⽬标嵌⼊层和位置编码 输出部分包含: 线性层 softmax处理器 左侧编码器部分和右侧解码器部…...
Zookeeper学习一
初识 Zookeeper Zookeeper 是 Apache Hadoop 项目下的一个子项目,是一个树形目录服务(B树)。 Zookeeper 翻译过来就是 动物园管理员,他是用来管 Hadoop(大象)、Hive(蜜蜂)、Pig(小 猪)的管理员。简称zk …...
SAR教程系列7——在cadence中用Spectrum工具FFT仿真ADC的ENOB、SNR等动态性能指标
首先在仿真之前,你得有一个ADC。然后是思考如何仿真的问题,如何加激励,如何使用相关工具查看仿真结果。假定你有一个可以仿真的ADC,大致经过下列步骤可以得到ADC的相关动态性能指标。 第一步:在ADC后面接一个理想的DA…...
攻防世界:mfw[WriteUP]
根据题目提示考虑是git库泄露 这里在地址栏后加.git也可以验证是git库泄露 使用GitHack工具对git库进行恢复重建 在templates目录下存在flag.php文件,但里面并没有flag 有内容的只有主目录下的index.php index.php源码: <?phpif (isset($_GET[page…...
mysq性能优化-my.cnf配置文件参数调整
MySQL 优化配置文件(my.cnf 或 my.ini)是调整 MySQL 服务器性能的重要手段之一。以下是一些常见的场景,可以通过调整配置文件参数值来优化 MySQL: 1. **提高并发处理能力**: - innodb_buffer_pool_size:增…...
ddres( ) 组站星双差方程和设计矩阵
1 ddres( )参数介绍 rtklib中进行的单频解算 双差观测值,单差的模糊度 单频点双差 DD (double-differenced) phase/code residuals ------------------------------ x 模糊度 P 方差-协方差阵 sat 共识卫星列表 ns 共识卫星数量 y…...
【OpenCV】图像像素的遍历
1 前言 介绍两种遍历像素的方法(非指针、指针)。注意:.at() .ptr()的作用、用法。相关API: Mat对象.ptr() Mat对象.at() 2 代码及内容 #include "iostream" #include "opencv2/opencv.hpp"using namespac…...
(超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
当构建高可用的网络应用时,负载均衡是至关重要的技术之一。Nginx 是一个强大的开源反向代理服务器,提供了丰富的负载均衡功能,包括负载均衡算法和健康检查。在本篇博客中,我们将讨论如何使用 Nginx 进行负载均衡,并结合…...
华为OD面试手撕算法-合并排序数组
题目描述 本题是leetcode一道简单题:合并两个有序数组,但是对于时间和空间复杂度面试官明确给出了限制。 // 给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。 // 初始化…...
云智慧发布对象关系型数据库CloudPanguDB,打破传统技术壁垒
近日,云智慧推出关系型数据库CloudPanguDB(中文名称:盘古数据库),旨在通过高兼容性能和创新技术架构,降低企业项目整体运营成本。 无论是处理海量复杂数据,还是构建清晰有序的数据结构关系&…...
6.8物联网RK3399项目开发实录-驱动开发之RTC实时时钟的使用(wulianjishu666)
90款行业常用传感器单片机程序及资料【stm32,stc89c52,arduino适用】 链接:https://pan.baidu.com/s/1M3u8lcznKuXfN8NRoLYtTA?pwdc53f RTC 使用 简介 AIO-3399J 开发板上有 一个集成于 RK808 上的RTC(Real Time Clock),主要功能有时钟,…...
VUE——概述
vue是前端框架,基于MVVM思想。 引入 从官网下载vue文件 <script src"js/vue.js"></script> 定义vue对象 new Vue({el: "#x",//vue接管区域,#表示选择器,x是id名字data: {message: "y"} })案例…...
合宙4G模块Air724UG调试过程(短信发送、上传数据到华为云IOT)
合宙Air724UG-4G模块AT指令调试接线演示 一、前言 上海合宙Air724UG模块是一款高性能的4G Cat.1通信模组(全网通模块,支持移动、联通、电信,支持短信和网络通信),为开发者提供了丰富的接口和开发方式。 在本文中,将详述调试与集成该模块的关键步骤: (1)从基础硬件配…...
【项目新功能开发篇】需求分析和开发设计
作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是࿰…...
CentOS 7 下离线安装RabbitMQ教程
CentOS 7 下安装RabbitMQ教程一、做准备(VMWare 虚拟机上的 CentOS 7 镜像 上安装的) (1)准备RabbitMQ的安装包(rabbitmq-server-3.8.5-1.el7.noarch)下载地址mq https://github.com/rabbitmq/rabbitmq-se…...
【Servlet】session保存作用域
session保存作用域:一次会话范围都有效 Java的服务器端,有一块内存专门存储在session保存作用域的数据。 session保存作用域是和具体的某一个session对应的。 常用API: void session.setAttribute(k, v)Object session.getAttrivute(k) —…...
企业周年庆3d云展厅促进了客企间交流与互动
在数字化浪潮席卷而来的今天,传统的展示方式已难以满足现代人对信息获取与体验的高标准需求。为此,一种革命性的展示方式——线上3D虚拟展厅应运而生,以其独特的魅力逐渐引领展示方式的革新。 线上3D虚拟展厅开发,不仅为参与者带来…...
Android Studio学习5——布局layout与视图view
wrap_content,内容有多大,就有多宽(包裹) 布局 padding 边框与它自身的内容 margin 控件与控件之间...
设计模式(15):迭代器模式
介绍 提供一中可以遍历聚合对象的方式。又称为: 游标cursor模式 迭代器模式角色 抽象聚合类(Aggregate):提供了聚合相关的方法,并提供获取迭代器的方法;具体集合类(ConcreteAggregate):实现了抽象聚合类;抽象迭代器(Iterator):…...
NXP S32K3xx之HSE密钥管理与安全服务实战
1. HSE密钥管理基础:从零开始理解安全引擎 第一次接触NXP S32K3xx的HSE模块时,我被各种密钥术语搞得晕头转向。经过几个实际项目的打磨,现在我可以负责任地告诉你:理解HSE密钥管理就像学习一门新语言,掌握基础词汇后就…...
ai辅助stm32开发,向快马描述需求即可获得精准的f103c8t6引脚配置代码
最近在做一个基于STM32F103C8T6的小项目,需要用到UART、I2C、PWM、ADC和GPIO等多种外设。作为嵌入式开发新手,最头疼的就是引脚分配和初始化代码的编写。好在发现了InsCode(快马)平台的AI辅助开发功能,用自然语言描述需求就能得到专业的代码解…...
Go语言的context.WithCancel取消信号传播与资源清理在分布式系统中的协调
Go语言的context.WithCancel取消信号传播与资源清理在分布式系统中的协调 在分布式系统中,任务的取消与资源清理是确保系统稳定性和高效性的关键挑战。Go语言通过context包提供了优雅的解决方案,尤其是context.WithCancel机制,能够实现跨组件…...
STM32实现智能酒驾监测系统设计
基于STM32的酒后驾车监测报警系统设计与实现1. 项目概述1.1 系统背景酒后驾车是全球交通事故的主要诱因之一,传统的人工检测方法存在效率低、覆盖范围有限等问题。随着嵌入式系统和物联网技术的发展,智能化的酒精监测系统成为解决这一问题的有效方案。1.…...
Unity 工具之(SharpZipLib)跨平台中文Zip压缩与解压实战指南(附多线程优化)
1. 为什么选择SharpZipLib处理Unity中的Zip文件 在Unity项目开发中,资源打包和网络传输经常需要处理压缩文件。SharpZipLib作为.NET平台的老牌压缩库,相比Unity内置的压缩方案有三个不可替代的优势: 首先是对中文路径的完美支持。很多开发者都…...
GCC编译选项详解与工程实践指南
GCC编译选项深度解析与工程实践指南1. 编译选项基础概念1.1 编译过程与选项作用GCC编译过程分为预处理、编译、汇编和链接四个阶段。编译选项通过控制这些阶段的行为,实现不同的编译目标:# 完整编译流程示例 gcc -E main.c -o main.i # 预处理 gcc -S…...
猫抓浏览器插件:网页资源嗅探与下载的终极解决方案
猫抓浏览器插件:网页资源嗅探与下载的终极解决方案 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾在浏览网页时,看到精彩的视频、音频或图片资源,却苦于无…...
Vivado初始化设计慢?可能是这3个隐藏设置惹的祸
Vivado初始化设计慢?可能是这3个隐藏设置惹的祸 当你在深夜赶项目进度,Vivado却卡在"Initializing Design"界面转圈超过15分钟,那种焦虑感堪比考试时笔没水。作为Xilinx FPGA开发的核心工具,Vivado的初始化速度直接影响…...
SpringBoot3 + JetCache实战:如何用两级缓存把接口性能提升10倍?
SpringBoot3 JetCache实战:高并发场景下的缓存架构设计与性能优化 在电商秒杀、实时数据查询等高并发场景中,传统数据库直接承受流量冲击往往会导致系统崩溃。去年双十一期间,某头部电商平台通过多级缓存架构成功扛住了每秒百万级的查询请求…...
2026年03月27日全球AI前沿动态
一句话总结AI领域覆盖通用/垂直大模型、智能体应用、物理机器人、硬件算力、企业战略、产品更新、投融资、行业观点、民生教育、研究资源全维度,国产技术密集突破、智能体全面落地、硬件自研提速、安全风险频发、老年AI教育落地,行业向实用化、国产化、安…...
