首页 > 编程问答 >如何从节点js使用AWS s3实施AWS Media Convert?

如何从节点js使用AWS s3实施AWS Media Convert?

时间:2024-07-19 12:25:32浏览次数:16  
标签:node.js amazon-s3

我正在构建一个应用程序,用户可以在其中上传和观看视频。我将视频以 .mp4 容器格式存储在 S3 中,但是,我想将视频转换为 m3u8 格式以进行自适应流式传输。

我发现有一个名为“Amazon MediaConvert”的东西 ( https://docs .aws.amazon.com/mediaconvert/index.html ) 可以为我完成这项工作。

有人尝试过使用此 AWS 媒体转换服务吗?我正在努力实施这个?有人可以指导吗?或者如果我的方法错误

根据 MediaConvert,基本流程是: 1. 获取您的帐户特定端点 2. 创建转码作业 3. 使用作业对视频进行转码

我被困在步骤 2 中。|| |我的目标是使用 Node js 在服务器端将 .mp4 视频转换为 m3u8。请帮忙

My objective is to convert the .mp4 videos to m3u8 in server side using node js. PLease help


选择使用 AWS MediaConvert 将 MP4 视频转换为 HLS (m3u8) 格式来实现自适应流媒体是非常好的。以下是如何使用 Node.js 在服务器端执行此操作的分步指南:

1. 设置 AWS 账户和凭据:

  • 如果还没有,请创建一个 AWS 账户 ( https://aws.amazon.com )。
  • 创建一个 IAM 用户,并附加以下策略以授予 MediaConvert 访问权限:
    • AmazonMediaConvertFullAccess
    • AmazonS3FullAccess (如果打算直接从 S3 读取和写入文件)
  • 记下的访问密钥 ID 和秘密访问密钥。

2. 设置 Node.js 项目:

  • 创建一个新的 Node.js 项目: bash mkdir video-transcoding cd video-transcoding npm init -y
  • 安装 AWS SDK for JavaScript: bash npm install aws-sdk

3. 编写 Node.js 代码:

  • 创建一个新的 JavaScript 文件 (例如, transcode.js ) 并粘贴以下代码:

    ```javascript const AWS = require('aws-sdk'); const { v4: uuidv4 } = require('uuid'); // 用于生成唯一作业名称

    // 配置 AWS 凭据 AWS.config.update({ accessKeyId: 'YOUR_ACCESS_KEY_ID', secretAccessKey: 'YOUR_SECRET_ACCESS_KEY', region: 'YOUR_AWS_REGION', // 例如,'us-east-1' });

    // 创建 MediaConvert 对象 const mediaconvert = new AWS.MediaConvert({ endpoint: 'YOUR_MEDIACONVERT_ENDPOINT', // 区域特定端点,可以在 MediaConvert 控制台中找到 });

    // 定义转码作业参数 const params = { "Queue": "YOUR_MEDIACONVERT_QUEUE_ARN", // 创建一个队列并在此处粘贴 ARN "UserMetadata": { "Customer": "Custom", "Workflow": "Complete" }, "Role": "YOUR_IAM_ROLE_ARN", // 创建一个 IAM 角色并附加 MediaConvert 策略并在此处粘贴 ARN "Settings": { "Inputs": [ { "AudioSelectors": { "Audio Selector 1": { "Offset": 0, "DefaultSelection": "DEFAULT", "ProgramSelection": 1, "SelectorType": "PID", "Tracks": [ 1 ], "LanguageCode": "ENM" } }, "VideoSelector": { "ColorSpace": "FOLLOW" }, "FileInput": "s3://YOUR_INPUT_BUCKET/YOUR_INPUT_VIDEO.mp4" } ], "OutputGroups": [ { "Name": "Apple HLS", "OutputGroupSettings": { "Type": "HLS_GROUP_SETTINGS", "HlsGroupSettings": { "ManifestDurationFormat": "INTEGER", "SegmentLength": 5, "Destination": "s3://YOUR_OUTPUT_BUCKET/YOUR_OUTPUT_FOLDER/" } }, "Outputs": [ { "Preset": "System-Hls-720p", "NameModifier": "_720p" }, { "Preset": "System-Hls-480p", "NameModifier": "_480p" }, { "Preset": "System-Hls-Audio", "NameModifier": "_audio" } ] } ] }, "JobTemplate": "optional-job-template-name" };

    // 创建 MediaConvert 作业 mediaconvert.createJob(params, (err, data) => { if (err) { console.error("Error creating MediaConvert job:", err); } else { console.log("MediaConvert job created successfully:", data.Job.Id); } }); ```

  • 用的实际值替换占位符:

    • YOUR_ACCESS_KEY_ID YOUR_SECRET_ACCESS_KEY YOUR_AWS_REGION
    • YOUR_MEDIACONVERT_ENDPOINT
    • YOUR_MEDIACONVERT_QUEUE_ARN
    • YOUR_IAM_ROLE_ARN
    • YOUR_INPUT_BUCKET YOUR_INPUT_VIDEO.mp4
    • YOUR_OUTPUT_BUCKET YOUR_OUTPUT_FOLDER/

4. 运行代码:

  • 使用以下命令运行脚本: bash node transcode.js

此代码将创建一个 MediaConvert 作业,将的 MP4 视频转换为具有多种分辨率 (720p、480p) 和仅音频流的 HLS 流,以实现自适应流媒体。输出文件将保存在指定的 S3 存储桶中。

其他注意事项:

  • 错误处理: 为确保代码的可靠性,实施稳健的错误处理。
  • 事件通知: 利用 MediaConvert 的事件通知功能,在作业完成、失败或出现错误时收到通知。
  • 作业模板: 为常用的转码设置创建 MediaConvert 作业模板,以简化的代码并提高可重用性。
  • 自适应比特率流媒体 (ABR): 考虑使用 MediaPackage 或 CloudFront 等服务来提供自适应比特率流媒体体验,根据网络条件自动调整视频质量。
  • 安全: 始终遵循安全最佳实践,例如使用临时凭据和限制 IAM 角色的权限。

希望本指南能帮助使用 AWS MediaConvert 和 Node.js 设置视频转码管道。 如果有任何其他问题,请随时提出!

标签:node.js,amazon-s3
From: 55556970

相关文章

  • Java语言,MySQL数据库;基于Node+Vue的健康信息管理系统的设计与实现32355(免费领源码)计算
    Node.js健康信息管理系统的设计摘要在如今IT技术快速发展和Internet广泛应用的时代,电子和网络技术给人们生活带来了便利,同时也会直接或间接损害人们的健康。所以,本次的毕业设计创作的意义就是通过信息化的统一管理,给用户录入和查看健康信息提供了方便。本设计主要实现集人......
  • 深入探讨:Node.js、Vue、SSH服务与SSH免密登录
    深入探讨:Node.js、Vue、SSH服务与SSH免密登录在这篇博客中,我们将深入探讨如何在项目中使用Node.js和Vue,并配置SSH服务以及实现SSH免密登录。我们会一步步地进行讲解,并提供代码示例,确保你能轻松上手。一、Node.js与Vue的结合1.1Node.js简介Node.js是一个基于ChromeV8......
  • 手把手教你基于华为云鲲鹏弹性云服务器部署Node.js环境
    本文分享自华为云社区《华为云之使用鲲鹏弹性云服务器部署Node.js环境【玩转华为云】》,作者:江湖有缘。一、本次实践介绍1.1实践环境简介本次实践环境使用华为KooLabs云实验平台。本次实践基于基于华为云鲲鹏弹性云服务器。在HCE系统上安装、部署、测试Node.js项目。1.3本......
  • 【JavaScript脚本宇宙】解密六大Node.js消息队列库:选对工具,事半功倍
    从Bull到NSQ:探索Node.js消息队列库的全貌前言在现代软件开发中,消息队列是一种常见的通信模式,用于实现异步任务处理、解耦系统组件、以及实现可靠的事件驱动架构。Node.js作为一个流行的后端开发平台,有许多优秀的消息队列库可以供开发者选择和使用。本文将介绍六个流行的No......
  • Node.js安装与配置
    Node.js的安装与配置[Node.js官网]20.15.1版本下载链接zip包下载设置全局安装文件夹npmconfigsetprefix"F:\dev\env\node\node_global"设置全局缓存文件夹npmconfigsetcache"F:\dev\env\node\node_cache"安装cnpm到本地npminstall-gcnpm--registry=https:/......
  • 全栈物联网项目:结合 C/C++、Python、Node.js 和 React 开发智能温控系统(附代码示例)
    1.项目概述本文详细介绍了一个基于STM32微控制器和AWSIoT云平台的智能温控器项目。该项目旨在实现远程温度监控和控制,具有以下主要特点:使用STM32F103微控制器作为主控芯片,负责数据采集、处理和控制逻辑采用DHT22数字温湿度传感器,精确采集环境温湿度数据通过ESP8266WiF......
  • 开发环境搭建:Node.js安装
            在现代的软件开发中,Node.js已经成为了一个不可或缺的工具。它不仅仅是一个JavaScript运行环境,更是一个强大的工具集,可以帮助开发者快速构建高效的网络应用和服务。    在本文中,博主将指导你如何在自己的开发环境中安装和配置Node.js。1.访问Node......
  • (免费领取源码)计算机毕业设计项目:宠物店管理系统 19849(开题答辩+程序定制+全套文案 )上
    目 录摘要1绪论1.1背景及意义1.2研究现状1.3springboot框架介绍2 宠物店管理系统系统分析2.1可行性分析2.2系统流程分析2.2.1数据流程3.3.2业务流程2.3系统功能分析2.3.1功能性分析2.3.2非功能性分析2.4系统用例分析2.5本章小结......
  • (免费领源码)Java/Mysql数据库+09536 SSM爱心捐赠物资维护系统,计算机毕业设计项目推荐上
    摘要随着信息技术的快速发展,计算机应用已经进入成千上万的家庭。随着物资数量的增加,物资库存管理也存在许多问题。物资数据的处理量正在迅速增加,原来的手工管理模式不适合这种形式。使用计算机可以完成数据收集、处理和分析,减少人力和物力的浪费。需要建立爱心捐赠物资维护系......
  • 本地 AI RAG 系列之 使用 OpenLlama、Postgres、Node.js 和 Next.js 进行 100% 免费矢
    简介所以你想尝试向量搜索,但你不想付钱给OpenAI,或者使用Huggingface,也不想付钱给向量数据库公司。我来帮你。让我们在自己的机器上免费开始向量搜索吧。推荐文章《知识图谱大模型系列之01利用KeyBERT、HDBSCAN和Zephyr-7B-Beta构建知识图谱,LLM增强的自然语言处......