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

前言

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

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

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

uniapp 上传文件

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

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

javascript 复制代码
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'})

下载到手机相册

javascript 复制代码
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:'文件下载成功'
				 	})
					// 下载成功后,调用微信保存图片到系统相册API
					      uni.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'})

相关推荐
一颗小青松11 小时前
uniapp输入框fixed定位,导致页面顶起解决方案
前端·uni-app
四方云11 小时前
电销系统中FreeSWITCH桥接播放自定义振铃:被叫接听后振铃持续问题解决
ffmpeg
2501_9151063217 小时前
深入解析无源码iOS加固原理与方案,保护应用安全
android·安全·ios·小程序·uni-app·cocoa·iphone
万能小林子18 小时前
2026 AI开发新范式:Vibe Coding生成网页 + 3分钟打包成App,非技术人也能独立发布自己的App!
人工智能·uni-app·ai编程·web app·vibecoding
一颗小青松20 小时前
uniapp 集成友盟并且上传页面路径
前端·vue.js·uni-app
花花鱼21 小时前
将 MP4 转为 886×1920(竖屏)使用ffmpeg处理
ffmpeg
杨云龙UP2 天前
Oracle RAC/ODA环境下如何准确查询PDB表空间已分配大小?一次说清Oracle表空间逻辑大小和ASM三副本实际占用_2026-05-19
linux·运维·数据库·sql·oracle·ffmpeg
00后程序员张2 天前
HTTPS单向认证、双向认证、抓包原理与反抓包策略详解
网络协议·http·ios·小程序·https·uni-app·iphone
h_65432102 天前
uniapp-APP端获取拍照时的方向角,同一位置横竖屏拍方向角一致
uni-app