【问题标题】:How to combine video and audio through API or JS? [closed]如何通过 API 或 JS 结合视频和音频? [关闭]
【发布时间】:2015-03-06 00:13:01
【问题描述】:

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

  1. 用户上传视频,JS代码查找视频长度。

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

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

我一直在进行大量的谷歌搜索,到目前为止还没有找到任何可以做到这一点的服务或代码。

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

【问题讨论】:

  • 定义:我想要做的就是在视频中添加一个音轨,替换现有的(如果有的话)。
  • 我的帖子由于某种原因被否决了,但除非您打算像 uber 一样扩展,否则不使用 yt api 会很愚蠢。此外,here 是使用 Elektron(跨平台 javascript 框架)构建的“Youtube Audio Ripper”(MP4 到 MP3)的 github 源。所以那里。如果您选择走这条路,那就是为您的项目完成的粗略设计/可行性阶段。

标签: javascript ruby-on-rails http audio video


【解决方案1】:

你可以试试videoconverter.js,我之前没试过, 但我认为这是目前做前端的唯一方法......最小的缩小版本也需要 6.1 MB。

另一种选择是将视频上传到您的服务器,使用 ffmpeg 将其合并,并为用户提供输出文件的链接,以便下载或流式传输。

【讨论】:

  • 当您使用 videoconverter.js 遵循这个(通常很好的)答案时,请注意两件事:1)该项目在 GitHub 上已无人维护超过 5 年。 2) FFmpeg 是 LGPL,当在服务器上使用时,这不是问题(因为托管不构成 GPL 术语中的分发/传送),但在前端可能会有所不同(因为下载 JavaScript 是分发/传送) .
【解决方案2】:

我目前正在使用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);
};

【讨论】:

  • 感谢您的回答。您在组合视频时遇到过任何问题吗?
  • 不,我在合并视频方面没有任何问题
  • 感谢您的快速回复。所以你遇到的唯一问题是在视频中添加音频?现在开始研究这个项目,因此了解优缺点会很有帮助。
【解决方案3】:

关于 svc 与音频,请考虑 youtube 音乐 / youtube api。它将提供您将需要的所有曲目。只是不要忘记版权。但是,无论您走到哪里,都会遇到这个问题。

【讨论】:

  • 我相信这个api会让你根据音轨长度进行搜索,但是你要查看详细信息here
猜你喜欢
  • 2017-04-02
  • 1970-01-01
  • 2014-06-29
  • 2012-11-19
  • 2016-07-04
  • 1970-01-01
  • 1970-01-01
  • 2022-06-11
  • 1970-01-01
相关资源
最近更新 更多