javascript - 如何通过API或JS合并视频和音频?

标签 javascript ruby-on-rails http audio video

<分区>

我正在设计一个执行以下操作的系统:

  1. 用户上传视频,JS代码求视频时长。

  2. 对现有服务执行 HTTP 调用以检索相同长度的音轨。

  3. 同步并组合音频和视频(长度完全相同)。我能想到的最好的事情是同时播放它们(完全可以使用 HTML5),但我希望能够让用户下载组合文件,或者能够说...将其上传到YouTube 通过他们的 API。

我进行了大量的谷歌搜索,到目前为止还没有找到任何可以执行此操作的服务或代码。

我熟悉 JavaScript、Ruby on Rails、HTML、CSS、jQuery 以及 AngularJS 和 Backbone.js。如果其中一种语言存在解决方案,或者我可以通过 HTTP 访问的解决方案,那就太好了。

最佳答案

我目前正在使用 FFmpeg.wasm .这是一个很棒的工具,但我还没有找到使用纯 JavaScript 执行此操作的方法,因为音频和视频有时具有不同的编解码器。我做了一个函数来合并视频并返回一个 Uint8Array,它可以在 blob 中使用。

<script src='https://unpkg.com/@ffmpeg/ffmpeg@0.9.6/dist/ffmpeg.min.js'></script>
async function mergeVideo(video, audio) {
    let { createFFmpeg, fetchFile } = FFmpeg;
    let ffmpeg = createFFmpeg();
    await ffmpeg.load();
    ffmpeg.FS('writeFile', 'video.mp4', await fetchFile(video));
    ffmpeg.FS('writeFile', 'audio.mp4', await fetchFile(audio));
    await ffmpeg.run('-i', 'video.mp4', '-i', 'audio.mp4', '-c', 'copy', 'output.mp4');
    let data = await ffmpeg.FS('readFile', 'output.mp4');
    return new Uint8Array(data.buffer);
};

关于javascript - 如何通过API或JS合并视频和音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28890275/

相关文章:

asp.net - GIT + HTTP 跨网络失败

Python HTTP 错误 403 禁止访问

PHP CURL DELETE 请求

java - 使窗口模糊和鼠标 Activity 的服务 session 无效

java - 在 Android 应用程序中运行 javascript?

JavaScript 解析树

sql - 使用 DISTINCT 子句过滤数据但仍拉取其他非 DISTINCT 字段

ruby-on-rails - gzip压缩 Assets 和预编译 Assets 之间的Heroku冲突

javascript - 根据类名更改当前悬停图像上的图像 - JavaScript

javascript - 在rails中使用ajax更新 Controller 变量?