纯前端实现 vue 利用ffmpeg.wasm将图片合成视频

我这里省略了通过three.js在前端实现动画渲染过程,(其他文章中介绍)

通过canvas拿到这个动画的所有帧图片,主要是对图片的操作

这些帧图片存入imgArr[]数组中,命名为1.png、2.png、3.png、.........  352.png

参考:

https://github.com/ffmpegwasm/ffmpeg.wasm/blob/master/docs/api.md#ffmpeg-fs


https://github.com/skywalk94/img-to-video

1. 安装:

>     npm install @ffmpeg/core@0.10.0 -S

>     npm install @ffmpeg/ffmpeg@0.9.8 -S

2. 引入

> import { createFFmpeg, fetchFile } from '@ffmpeg/ffmpeg';

3. 初始化

需要把这三个文件复制放到public文件夹下面


4. 使用

data() {
    return {
        imgArr: [],
        ffmpeg: null,
        videoTime: 10,
    }
},

  async imgToVideo() {
    this.ffmpeg = createFFmpeg({
        corePath: "/ffmpeg-core.js",
        // log: true,
    });
    if (!this.ffmpeg.isLoaded()) {
        await this.ffmpeg.load()
    }
    // fetchFile(media): 用于从各种资源中获取文件的辅助函数。
    // this.imgArr[]为图片数组,里面包含所需合成图片的base64编码
    for (let i = 0; i < this.imgArr.length; i++) {
        this.ffmpeg.FS('writeFile', `${i}.png`, await fetchFile(this.imgArr[i]))
    }
    var time = this.videoTime.toString()
    console.log('time', time)
    await this.ffmpeg.run('-r', '24', '-f', 'image2', '-i', '%d.png', '-t', time, 'video.mp4') // 所有参数都为字符串
    const data = this.ffmpeg.FS('readFile', 'video.mp4')
    this.videoUrl = URL.createObjectURL(new Blob([data.buffer], {
        type: 'video/mp4'
    }))
    console.log('视频地址:', this.videoUrl)
    document.querySelector("#videoContainer").style.display = "block";
},

 

想要在视频中加上声音只需要在this.ffmpeg.run()中加两个参数'-i'和bg即可

const bg = 'bg'
this.ffmpeg.FS('writeFile', bg, await fetchFile(this.audio))

.

await this.ffmpeg.run('-r', '24', '-f', 'image2', '-i', '%d.png', '-i', bg, '-t', time, 'video.mp4') 

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
引用是关于FFmpeg在浏览器中使用的API文档。在这个文档中,可以找到有关FFmpeg在浏览器中的使用方法和功能的详细说明。引用是一个示例代码,展示了如何在Vue项目中使用@ffmpeg/ffmpeg包。具体来说,示例代码中使用了createFFmpeg和fetchFile方法进行初始化。引用是关于使用@ffmpeg/ffmpeg包的GitHub加速地址以及在Vue2项目中安装@ffmpeg/ffmpeg和@ffmpeg/core包的指导。 Vue3和@ffmpeg/ffmpeg是两个不同的事物。Vue3是Vue.js的下一个主要版本,它引入了许多新的特性和改进。@ffmpeg/ffmpeg一个用于在浏览器中使用FFmpeg的JavaScript包。它提供了一组API和工具,使开发人员能够在浏览器中进行视频处理和转码。这两者在功能和用途上是不同的。 在Vue3项目中使用@ffmpeg/ffmpeg,可以按照引用中提供的示例代码进行操作。首先,在Vue项目中安装@ffmpeg/ffmpeg和@ffmpeg/core包。然后,在代码中使用createFFmpeg和fetchFile方法进行初始化和使用。 需要注意的是,Vue3和@ffmpeg/ffmpeg是两个独立的库,它们的安装和使用方式是不同的。Vue3可以通过Vue CLI进行安装和创建项目,而@ffmpeg/ffmpeg可以通过npm或yarn进行安装,并在代码中引入和使用相关的方法和功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [前端实现 vue 利用ffmpeg.wasm图片合成视频](https://blog.csdn.net/qq_44830060/article/details/127804121)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [ffmpeg.wasm实现网页操作视频](https://blog.csdn.net/qq_36437991/article/details/129557487)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值