当前位置: 首页 > news >正文

cocos creator 集成ffmpeg

1

npm install @ffmpeg/ffmpeg@0.10.1 @ffmpeg/core@0.10.0

2
node_modules@ffmpeg\ffmpeg\package.json添加

"exports": {"./dist/ffmpeg.min.js": "./dist/ffmpeg.min.js"
},

3
导入使用:

import { createFFmpeg, fetchFile } from "@ffmpeg/ffmpeg/dist/ffmpeg.min.js";

4
FFmpegCore.js SharedArrayBuffer is not defined

浏览器快捷方式的目标最后面加 --enable-features=SharedArrayBuffer

5
示例

import { createFFmpeg, fetchFile } from "@ffmpeg/ffmpeg/dist/ffmpeg.min.js";module.exports = {logs: '',init() {window.ffmpeg = createFFmpeg({log: true, logger: (...args) => {for (let i = 0; i < args.length; i++) {this.logs = this.logs + JSON.stringify(args[i])}},});},async compressVideo(fileurl, callback) {this.logs = ''let ffmpeg = window.ffmpegif (!ffmpeg.isLoaded()) {await ffmpeg.load();}let filename = `${new Date().getTime()}.mp4`ffmpeg.FS('writeFile', filename, await fetchFile(fileurl));await ffmpeg.run('-i', filename);const durationMatch = this.logs.match(/Duration: (\d+:\d+:\d+\.\d+)/);const bitrateMatch = this.logs.match(/bitrate:\s+(\d+)\s+kb\/s/);const duration = durationMatch ? this.parseDuration(durationMatch[1]) : 0;const bitrate = bitrateMatch ? parseInt(bitrateMatch[1]) * 1000 : 0; // 转换为 bpsconsole.log(`视频时长: ${duration}`);console.log(`原编码率: ${bitrate} bps`);ffmpeg.FS('unlink', filename);},parseDuration(durationString) {const parts = durationString.split(':');return (parseInt(parts[0]) * 3600) + (parseInt(parts[1]) * 60) + parseFloat(parts[2]);}}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • VideoFileClip 切割视频
  • 《家庭无线网络覆盖项目》
  • python 实现similarity search相似性搜索算法
  • SupplierbasicController
  • Android 点击其他组件让输入框失去焦点
  • 创意实现!在uni-app小程序商品详情页轮播中嵌入视频播放功能
  • 苹果更新过时产品:三款 Mac 成“古董”,九款 Mac 彻底“停产”
  • exebios提取工具通用exebios分离工具exe转编程器bios文件软件bios文件解密提取工具exe原厂bios提取烧录器bios芯片文件工具
  • Navicat Premium Lite 免费版 | 数据库连接类型简介
  • 如何更新Oracle表 LONG型的大文本学习
  • 解决mac下 Android Studio gradle 下载很慢,如何手动配置
  • 免费下载6组简历模板,让HR一眼相中你!
  • Redis——持久化策略
  • 速盾:高防cdn除了快还有什么好处?
  • 【R语言】fs 工具功能速查
  • #Java异常处理
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • android 一些 utils
  • CentOS 7 防火墙操作
  • ES6 ...操作符
  • js
  • Linux中的硬链接与软链接
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • mockjs让前端开发独立于后端
  • SQLServer之索引简介
  • swift基础之_对象 实例方法 对象方法。
  • vue.js框架原理浅析
  • Web Storage相关
  • 计算机常识 - 收藏集 - 掘金
  • 聚类分析——Kmeans
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 我与Jetbrains的这些年
  • 自制字幕遮挡器
  • 最近的计划
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ‌移动管家手机智能控制汽车系统
  • # Redis 入门到精通(八)-- 服务器配置-redis.conf配置与高级数据类型
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (13)Hive调优——动态分区导致的小文件问题
  • (HAL库版)freeRTOS移植STMF103
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (搬运以学习)flask 上下文的实现
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (十三)Maven插件解析运行机制
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (图)IntelliTrace Tools 跟踪云端程序
  • (自适应手机端)行业协会机构网站模板
  • ****三次握手和四次挥手
  • *p++,*(p++),*++p,(*p)++区别?