cocos creator 集成ffmpeg

1

javascript 复制代码
npm install @ffmpeg/ffmpeg@0.10.1 @ffmpeg/core@0.10.0

2

node_modules@ffmpeg\ffmpeg\package.json添加

javascript 复制代码
"exports": {
        "./dist/ffmpeg.min.js": "./dist/ffmpeg.min.js"
},

3

导入使用:

javascript 复制代码
import { createFFmpeg, fetchFile } from "@ffmpeg/ffmpeg/dist/ffmpeg.min.js";

4

FFmpegCore.js SharedArrayBuffer is not defined

javascript 复制代码
浏览器快捷方式的目标最后面加 --enable-features=SharedArrayBuffer

5

示例

javascript 复制代码
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.ffmpeg

        if (!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; // 转换为 bps


        console.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]);
    }


}
相关推荐
浩瀚之水_csdn13 小时前
av_packet_alloc详解
ffmpeg
Echo_NGC22371 天前
【FFmpeg 使用指南】Part 3:码率控制策略与质量评估体系
人工智能·ffmpeg·视频·码率
xmRao2 天前
Qt+FFmpeg 实现 PCM 音频转 AAC 编码
qt·ffmpeg·pcm
xmRao2 天前
Qt+FFmpeg 实现录音程序(pcm转wav)
qt·ffmpeg
阿里巴啦3 天前
python+yt-dlp开源项目,支持 YouTube, Bilibili, TikTok/抖音,快手 等多个平台的视频/音频/字幕下载/ai摘要等功能
python·ffmpeg·whisper·音视频·视频处理·ai摘要·音视频转录
来鸟 鸣间4 天前
linux下ffmpeg源码编译
linux·运维·ffmpeg
Echo_NGC22374 天前
【FFmpeg使用指南】Part 2:滤镜图架构与信号处理
架构·ffmpeg·音视频·信号处理
Echo_NGC22374 天前
【FFmpeg使用指南】Part 1:核心架构与媒体流处理
ffmpeg·音视频·媒体·视频
ssxueyi4 天前
用 Claude Code 从零开发自己的Direct3D 硬件加速播放器
ffmpeg·ai编程·directx·视频播放器·从零开始·claude code·csdn征文活动
Yan_uuu4 天前
ubuntu18.04 安装 x264、ffmpeg、nv-codec-hearers 支持GPU硬件加速
c++·图像处理·ubuntu·ffmpeg