uniapp blob格式转换为video .mp4文件使用ffmpeg工具

前言

介绍一下这三种对象使用场景

 您前端一旦涉及到文件或图片上传Q到服务器,就势必离不了 Blob/File /base64 三种主流的类型它们之间 互转 也成了常态

  • Blob - File
  • Blob -Base64
  • Base64 - Blob
  • File-Base64
  • Base64 _ File

uniapp 上传文件

现在已获取到了blob格式的视频,现在需要把blob文件转换为视频

首先验证blob格式是否能播放

this.videoSrc = URL.createObjectURL(blob); // 转换后 用于挂载到视频播放器得转换
console.log('this.videoSrc ==》', this.videoSrc);

使用ffmpeg工具转换为MP4文件

去官网下载下载 FFmpeg并配置对应的环境变量

C:\path\to\ffmpeg\bin

即可

ffmpeg -version  // 能查看版本信息说明配置成功

 使用node.js命令转换

const {execSync} = require('child_process')

execSync(`ffmpeg -i blob test.mp4`,{stdio:'inherit'})

// execSync(`ffmpeg -i 1.mp4 1.gif`,{stdio:'inherit'})

下载到手机相册

uni.downloadFile({url: 'xxxx/water/app/event_vdo/2024/12/16/34_4_27_20241216_102340_70_0.mp4',success: function (res) {var filePath = res.tempFilePath;console.log('filePath===>',filePath);uni.showToast({icon:'none',title:'文件下载成功'})// 下载成功后,调用微信保存图片到系统相册APIuni.saveImageToPhotosAlbum({filePath: filePath,success: function () {console.log('保存成功');},fail: function (err) {console.error('保存失败', err);}});},fail:function(err){console.log(err);}});

 

FFmpeg 的主要功能和特性:

  1. 格式转换:FFmpeg 可以将一个媒体文件从一种格式转换为另一种格式,支持几乎所有常见的音频和视频格式,包括 MP4、AVI、MKV、MOV、FLV、MP3、AAC 等。
  2. 视频处理:FFmpeg 可以进行视频编码、解码、裁剪、旋转、缩放、调整帧率、添加水印等操作。你可以使用它来调整视频的分辨率、剪辑和拼接视频片段,以及对视频进行各种效果处理。
  3. 音频处理:FFmpeg 可以进行音频编码、解码、剪辑、混音、音量调节等操作。你可以用它来提取音频轨道、剪辑和拼接音频片段,以及对音频进行降噪、均衡器等处理。
  4. 流媒体传输:FFmpeg 支持将音视频流实时传输到网络上,可以用于实时流媒体服务、直播和视频会议等应用场景。
  5. 视频处理效率高:FFmpeg 是一个高效的工具,针对处理大型视频文件和高分辨率视频进行了优化,可以在保持良好质量的同时提供较快的处理速度。
  6. 跨平台支持:FFmpeg 可以在多个操作系统上运行,包括 Windows、MacOS、Linux 等,同时支持多种硬件加速技术,如 NVIDIA CUDA 和 Intel Quick Sync Video。

视频转gif

const {execSync} = require('child_process')

execSync(`ffmpeg -i test.mp4 test.gif`,{stdio:'inherit'})

添加水印

const {execSync} = require('child_process')

execSync(`ffmpeg -i test.mp4 -vf drawtext=text="XMZS":fontsize=30:fontcolor=white:x=10:y=10 test2.mp4`,{stdio:'inherit'})

视频裁剪 + 控制大小

-ss 起始时间

-to 结束事件

const {execSync} = require('child_process')

execSync(`ffmpeg -ss 10 -to 20 -i test.mp4  test3.mp4`,{stdio:'inherit'})

 提取视频的音频

const {execSync} = require('child_process')

execSync(`ffmpeg -i test.mp4 test.mp3`,{stdio:'inherit'})

去掉水印

const {execSync} = require('child_process')

execSync(`ffmpeg -i  test2.mp4 -vf delogo=w=120:h=30:x=10:y=10 test3.mp4`,{stdio:'inherit'})

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

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

相关文章

【Rabbitmq篇】RabbitMQ⾼级特性----持久性,发送⽅确认,重试机制

目录 一.持久化 1 .交换机持久化 2 队列持久化 3.消息持久化 测试场景 二.发送⽅确认 1 .confirm确认模式 2 return退回模式 如何保证RabbitMQ消息的可靠传输?(面试重点) 三. 重试机制 一.持久化 我们在前⾯讲了消费端处理消息时,…

android recycleview 中倒计时数据错乱

原因 recyceleview 当页面划出屏幕外后,默认会有两条进入缓存区,这些item的结构会被保存,数据被清除,方便其他新进入屏幕的数据复用item,超过两条外的item会进入缓存池被完全销毁重用。 如果我们的页面上有editText 或…

深度学习之目标检测——RCNN

Selective Search 背景:事先不知道需要检测哪个类别,且候选目标存在层级关系与尺度关系 常规解决方法:穷举法,在原始图片上进行不同尺度不同大小的滑窗,获取每个可能的位置 弊端:计算量大,且尺度不能兼顾 Selective …

Spring Boot 多数据源解决方案:dynamic-datasource-spring-boot-starter 的奥秘

在 Spring Boot 生态中,dynamic-datasource-spring-boot-starter 是一个非常实用的组件,它为我们在多数据源场景下提供了便捷的解决方案。在上一篇文章《一分钟上手:如何创建你的第一个 Spring Boot Starter》中,我们学习了如何创…

linux系统编程(五)

1、信号 信号是事件发生时对进程的通知机制,针对每个信号都定义了一个唯一的整数,这些整数定义在signal.h中。 常见信号如下: SIGABRT:进程调用abort函数,系统向进程发送此信号,终止进程并产生核心转储文…

Flutter环境搭建

1.Flutter 简介 1.1 Flutter 是什么 ? Flutter 是一个 UI SDK(Software Development Kit)跨平台解决方案:可以实现一套代码发布移动端(iOS、Android、HarmonyOS)、Web端、桌面端目前很多公司都在用它&…

安全算法基础(一)

安全算法是算法的分支之一,还的依靠大量的数学基础进行计算,本文参照兜哥的AI安全样本对抗,做一个简单的算法安全概括,从零学习。 最新的安全算法对于我们常规的攻击样本检测,效果是不理想的,为了探究其原…

单元测试-Unittest框架实践

文章目录 1.Unittest简介1.1 自动化测试用例编写步骤1.2 相关概念1.3 用例编写规则1.4 断言方法 2.示例2.1 业务代码2.2 编写测试用例2.3 生成报告2.3.1 方法12.3.2 方法2 1.Unittest简介 Unittest是Python自带的单元测试框架,适用于:单元测试、Web自动…

QtCreator配置github copilot实现AI辅助编程

文章目录 1、概述2、配置环境3、演示 1、概述 新时代的浪潮早就已经来临,上不了船的人终将被抛弃,合理使用AI辅助开发、提升效率是大趋势,注意也不要过于依赖。 2024年12月18日,GitHub 官方宣布了一个激动人心的重大消息&#xf…

ElasticSearch08-分析器详解

零、文章目录 ElasticSearch08-分析器详解 1、分析器原理 Elasticsearch的分词器(Analyzer)是全文搜索的核心组件,它负责将文本转换为一系列单词(term/token)的过程,也叫分词。 (1&#xff…

数字经济下的 AR 眼镜

目录 1. 📂 AR 眼镜发展历史 1.1 AR 眼镜相关概念 1.2 市面主流 XR 眼镜 1.3 AR 眼镜大事记 1.4 国内外 XR 眼镜 1.5 国内 AR 眼镜四小龙 2. 🔱 关键技术 2.1 AR 眼镜近眼显示原理 2.2 AR 眼镜关键技术 2.3 AR 眼镜技术难点 3. &#x1f4a…

LabVIEW深海气密采水器测控系统

LabVIEW的深海气密采水器测控系统通过高性价比的硬件选择与自主开发的软件,实现了高精度的温度、盐度和深度测量,并在实际海上试验中得到了有效验证。 项目背景 深海气密采水器是进行海底科学研究的关键工具,用LabVIEW开发了一套测控系统&am…

RocketMQ的集群架构是怎样的?

大家好,我是锋哥。今天分享关于【RocketMQ的集群架构是怎样的?】面试题。希望对大家有帮助; RocketMQ的集群架构是怎样的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RocketMQ 是阿里巴巴开源的分布式消息中间件,广泛用于处…

【Rust自学】4.5. 切片(Slice)

4.5.0. 写在正文之前 这是第四章的最后一篇文章了,在这里也顺便对这章做一个总结: 所有权、借用和切片的概念确保 Rust 程序在编译时的内存安全。 Rust语言让程序员能够以与其他系统编程语言相同的方式控制内存使用情况,但是当数据所有者超…

AI的进阶之路:从机器学习到深度学习的演变(一)

AI的进阶之路:从机器学习到深度学习的演变 在当今科技迅猛发展的时代,人工智能(AI)、机器学习(ML)和深度学习(DL)已成为推动创新的核心力量。这三个领域虽然紧密相连,却…

《算法》题目

多项选择题 2023年2月,美国国家标准与技术研究院(NIST)将 Ascon算法确立为轻量级加密(LWC)标准,关于该算法和标准的说法,正确的是( )。 A.该标准属于国际标准 B.该标准旨在保护物联网(IoT)创建和传输的信息 C.通过法律法规规范标准化机构的职责与权限,可以起到推动技…

Git配置公钥步骤

GIt公钥的配置去除了git push输入账号密码的过程,简化了push流程。 1.生成SSH公钥和私钥 ssh-keygen -t rsa -b 4096 -C “your_emailexample.com” 遇到的所有选项都按回车按默认处理。获得的公钥私钥路径如下: 公钥路径 : ~/.ssh/id_rsa.pub 私钥路径…

Mysql的多表查询及表的连接

Mysql的多表查询及表连接 目录 Mysql的多表查询及表连接连接查询条件有关联的表的连接natural joinusingon等值连接非等值连接 表与表的外连接左外连接右外连接 表的自连接表的子连接表的伪表查询 连接查询条件 查询的两张表如果出现同名的列,我们需要将表名标注到列…

蓝桥杯 2024 国 B【选数概率】(AC)

题目描述 一个数组中有 a a a 个 1 1 1, b b b 个 2 2 2, c c c 个 3 3 3。设 P i , j P_{i,j} Pi,j​ 表示在数组中随机选取两个数,其中一个数为 i i i,另一个数为 j j j 的概率。比如 P 1 , 2 a b C ( a b c , 2 ) …

SPL06 基于stm32F103 HAL库驱动(软件模拟IIC)

talk is cheap, show you my code SPL06.c #include "SPL06.h"//*************全局变量*************// Factor_List* b_list; //存储过采样率对应的系数KP,KT COEF_ValueStruct Coefficient { 0 }; //存储校准系数…