如何将两个音频文件合并为一个并在javascript中合并后播放

Posted

技术标签:

【中文标题】如何将两个音频文件合并为一个并在javascript中合并后播放【英文标题】:How to merge two audio files into one and make it play after merge in javascript 【发布时间】:2020-05-05 12:17:29 【问题描述】:

我有一个要添加到背景中的曲目和一个录制的音频。我想合并两个音频并使其成为一个,而不是播放合并的音频。谁能帮我解决如何合并音频而不是播放它。

【问题讨论】:

***.com/questions/31833168/merge-audio-files-node-js 【参考方案1】:

您不能在客户端合并文件。如果你只想一起玩,你可以一起玩。

<audio id="myAud">  
  <source src="sounds/1.mp3" type="audio/mpeg">
</audio>
<audio id="myAud2">  
  <source src="sounds/2.mp3" type="audio/mpeg">
</audio>

<script>


var audio1 = document.getElementById("myAud");
var audio2 = document.getElementById("myAud2");

audio1.play();
audio2.play();


</script>

或者如果你选择一个接一个地玩:

<script>


var audio1 = document.getElementById("myAud");
var audio2 = document.getElementById("myAud2");

audio1.play();
audio1.addEventListener('ended', function() 
    // first one complete play next..
audio2.play();
,false);

</script>

【讨论】:

感谢@jawadkhan 的回复,您确定合并不能实现客户端吗?因为我目前正在从事该项目,其中 androidios 应用程序已经这样做了,现在我需要在 web (vue.js) 中实现它。 是的,处理需要在服务器端完成。但是,您可以在不重新加载页面的情况下实现这一点,例如通过 ajax 向服务器发送请求。您可以探索 FFMPEG 库。您需要将它安装在您的服务器上。还要检查这个答案:***.com/questions/32043251/…【参考方案2】:

如果你经常把这两个文件一起玩,建议你用ffmpeg合并一下。否则为什么不播放第一个文件并在这个文件的末尾播放另一个 (How to detect an audio has finished playing in a web page?)?

【讨论】:

我可以在客户端合并它们吗?如果是的话,请尽可能给我看代码。我想同时播放两个音频 正如japadkhan 已经说过的,我这需要在服务器端完成。音频文件被编码并在一个容器内(就像一个包含元数据和音频数据的 mp3 容器)。合并这两个文件需要解析容器结构的工具,你不能确定这些工具是在客户端还是客户端浏览器支持。您说您已经有 iOS 和 android 应用程序这样做,它是与应用程序链接的库? FFmpeg 命令取决于使用的编解码器和其他,但您可以查看reddit.com/r/ffmpeg/comments/7kpqxa/merging_two_audio_files

以上是关于如何将两个音频文件合并为一个并在javascript中合并后播放的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 将两个视频合并为一个带音频的视频文件

如何使用 c# 将两个音频文件和一个视频文件合并到一个视频文件中?

如何在客户端合并两个音频文件。 (甚至可能是服务器端)

如何将两个 mp3 文件合并为一个(合并/加入)

如何在ffmpeg中合并音频和两个视频文件?

在 C# 中合并两个音频文件