首页 > 编程语言 >nodeJs 实现视频的转换(超详细教程)

nodeJs 实现视频的转换(超详细教程)

时间:2024-04-02 17:00:49浏览次数:21  
标签:node 视频 教程 const ffmpeg nodeJs demo error

前段时间拿到一个视频是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

标签:node,视频,教程,const,ffmpeg,nodeJs,demo,error
From: https://blog.csdn.net/weixin_37742709/article/details/137275449

相关文章

  • 视频监控/云存储/AI智能分析平台EasyCVR集成时调用接口报跨域错误的原因排查
    EasyCVR视频融合平台基于云边端架构,可支持海量视频汇聚管理,能提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、智能分析等视频服务。平台兼容性强,支持多协议、多类型设备接入,包括:国标GB/T28181协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK......
  • windows环境下elasticsearch安装教程(超详细)
     一、安装jdkElasticSearch是基于lucence开发的,也就是运行需要javajdk支持。所以要先安装JAVA环境。由于ElasticSearch5.x往后依赖于JDK1.8的,所以现在我们下载JDK1.8或者更高版本。下载JDK1.8,下载完成后安装。二、安装ElasticSearch1.ElasticSearch下载地址:https:/......
  • 【包远程安装运行】:SpringBoot+Mysql在线课程学习教育系统源码+运行视频教程+开发文档
    今天发布的是由【猿来入此】的优秀学员独立做的一个基于springboot脚手架的在线课程学习平台系统,该系统除脚手架功能外又添加了一个前台,具体的功能如下:用户(未认证):学习课程、提交课程试题、上传分享资料、下载其他人的资料、收藏课程、个人中心、课程评价、资料讨论等。作......
  • 【包远程安装运行】:SpringBoot+Mysql学生在线考核考勤管理系统源码+运行教程+开发文档
    今天发布的是由【猿来入此】的优秀学员独立做的一个基于springboot脚手架的学生在线考核签到管理系统,除了脚手架功能外功能如下:一共有管理员教师学生三个角色管理员实现的功能有教师管理,学生管理,课表管理,课程管理,班级管理,排课管理等教师实现的功能有学生请假审批管......
  • 【Redis教程0x0C】数据库与缓存的一致性保证
    1.引言当我们在实现业务的过程中,如果发现服务器的性能瓶颈在数据库时,就要考虑加上Redis,让它作为数据库的缓存了。这样,客户端请求数据时,如果能在缓存命中,就不用去查数据库了,这大大减轻了数据库的压力,提高了服务器性能。那么这里就产生了个问题,我们在数据更新的时候,既需要......
  • 如何将MP4格式轻松转化为3GP格式的视频?分享你一个小妙招!
    MP4是当今市面上最为常见的视频格式之一。很多时候,人们在网上找到、下载的视频都是MP4格式的。不过,MP4格式的文件质量不小,而人们为了节约存储空间,有时会选择把MP4格式转换成为3GP格式。3GP格式也可以说是一种比较常见的视频格式,是MP4格式的一种简化版本,拥有占内存小的优点。那......
  • 什么是gif? 如何把视频格式转成gif动图格式?展现动图的魅力
    一,什么是gif格式gif是一种位图图形文件格式,主要用于显示索引彩色图像。gif格式在1987年由CompuServe公司开发,它采用LZW(Lempel-Ziv-Welch)无损压缩算法,这种算法可以有效地减少图像文件在网络上传输的时间。GIF格式的特点包括支持透明背景图像,可以显示多达256种不同的颜色。G......
  • 腾讯云优惠券领取方法、领券页面及使用教程
    随着云计算技术的不断发展,越来越多的企业和个人选择将业务迁移到云平台上。腾讯云作为国内领先的云计算服务提供商,为用户提供了稳定、高效、安全的云服务。为了吸引用户上云,腾讯云经常推出各种优惠活动,其中就包括发放腾讯云优惠券。本文将详细介绍腾讯云优惠券的领取方法、领券......
  • 麒麟操作系统如何启动snmp实现网管系统监控(教程含详细配置)
    实战需求麒麟操作系统如何启动snmp实现网管系统监控?什么是麒麟操作系统银河麒麟高级服务器操作系统V10SP3是一款直接面向kernel根社区,基于openEuler社区构建强安全、高可靠的国产Linux操作系统。具备CPU架构同源支持、自主平台优化、云原生支持、可管理性、高可用性和内......
  • Axure RP 9下载教程,产品经理实战指南!
    Axurerp9是产品经理必备的专业快速原型设计工具。Axurerp9可快速高效地创建产品原型图,绘制APP和网页原型图、框架图、结构图等。但是Axureerp9下载在用户体验中的缺陷也相对明显,其设置交互方式相对繁琐,可视化不足、条件判断、变量、中继器等功能的使用需要相对陡峭的学习......