将多个 mp3 文件“叠加”而不是按顺序合并到 .net 中的单个 mp3 文件中?

2023-12-12

我最近对这个问题的最新讨论的更新显示在底部

好吧,我正在尝试构建一个平台,我的 silverlight 应用程序将把不同的乐器音频合并到一个文件中并输出音乐音频。

我现在想做的是将多个 mp3 文件合并为一个 mp3 文件。但最终的 mp3 文件不应该播放第一个 mp3,然后播放第二个,......直到最后。它应该像 mp3 频道一样播放它们。用户将放置吉他通道、鼓通道等,合并器会将它们全部合并到一个 mp3 文件中作为输出。

我发现我可以通过一些代码来做到这一点ffmpeg和其他一些实用程序,但我找不到一种方法使其在通道结构中分层。

我发现了一个更简单的合并 mp3 的方法Mp3Wrap我更喜欢使用它,但我在谷歌上找不到任何关于它的帮助代码,而且从我读过的内容来看,我一直在尝试做的结构更难找到。

哦,顺便说一句..最后一个问题,我不喜欢 GPL 知识,所以如果我在我的项目中使用 Mp3Wrapper.exe 我可以将它用作商业项目吗?我能赚到钱吗?或筹集捐款?


编辑: 我还发现了一个叫做NAudio我不太确定它可以完成工作,但至少它看起来很熟悉,因为它是用 c# 编写的。但我不能在我的 silverlight 项目中使用它,因为它不是 silverlight 组件,而且我不确定它是否能工作。

另外,我一直在浪费时间搜索深度谷歌和 3 个选项的文档,找不到任何有用的东西,我真的不明白这些东西,但是,我准备好进行黑客攻击,不确定它是否有任何用处。使用或可行,但我也可以将 mp3 文件合并为音频通道(我看到我可以在 ffmpeg 中选择音频通道,但不太确定如何操作)。并将多个媒体元素添加到我的项目中并同时播放它们,希望它们能够同步并且mp3文件大小较小。

任何建议我如何通过黑客或良好的解决方案来实现我的目标。


另一个更新:

我决定使用流来合并我的 mp3 文件,因为我可以直接通过 .net 播放它们,并且经过一些尝试后它似乎更快。我正在使用以下代码,但我仍然找不到在“通道”或“分层”系统中合并文件的方法,而且我对流、位、缓冲区以及与 IO 相关的任何内容一无所知。希望这次更新可以帮助您给我一些见解。

    string path = AppDomain.CurrentDomain.BaseDirectory;
        using (var fs = File.OpenWrite(Path.Combine(path, "cOut.mp3")))
        {
            var buffer = File.ReadAllBytes(Path.Combine(path, "c1.mp3"));
            fs.Write(buffer, 0, buffer.Length);
            buffer = File.ReadAllBytes(Path.Combine(path, "c3.mp3"));
            fs.Write(buffer, 0, buffer.Length);
            fs.Flush();
        }

我也改变了主意,将 mp3 文件嵌入为音频通道。另一项似乎非常困难。我也完全接受有关音频通道操作的建议,您可以编写任何您能想到的解决方案,我对任何事情都持开放态度。

提前致谢..


最后我能够实现对 wmv 音频流的操作,但是尺寸太大了!所以我将注意力转移到合并 mp3 的原始点上,并且我能够通过 ffmpeg 实现我想要的!这个简单的代码合并多个 mp3 文件!但现在我遇到了音频速度的问题。我猜想 ffmpeg 会计算两个 mp3 文件(a1.mp3 + a2.mp3)的持续时间,然后拉伸音频以适应。因此我的音频以半速播放......我已经尝试过了;

  • -shortest(最短输入流结束时完成编码)
  • -async 1(将音频同步到时间戳,与 -copyts 一起使用)
  • -copyts(从输入流获取时间戳)
  • -speed 2(操纵速度)

但找不到出路。当它处理音频时,它会执行到正确的持续时间,但由于 -newaudio 流,它会产生双持续时间的定时音频。 当我在媒体播放器中将音乐速度加快 2 倍时,我就可以随心所欲地听音乐了。 这是代码;

   ffmpeg -i a1.mp3 -i a2.mp3 -map 0:0 -map 1:0 -acodec wmav2 -ar 44100 -ab 128k -y aout.wav -acodec wmav2 -ar 44100 -ab 128k -newaudio

顺便说一句:两个输入流是相同的 mp3 用于调试过程,因此输入没有问题。 谢谢。

P.S:如果可以的话,我不想使用 SOX,但如果没有其他选择,请指导我使用完全工作的二进制文件。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将多个 mp3 文件“叠加”而不是按顺序合并到 .net 中的单个 mp3 文件中? 的相关文章

  • 在同一进程中混合 .NET 3.5 与 4/4.5 程序集

    我想将基于 NET 3 5 WinForms 的应用程序迁移到最新的 NET 版本 4 5 该应用程序使用当前也基于 NET 3 5 的 外部 组件 可以视为插件 我想知道我们转换时使用哪些运行时 核心库仅应用程序使用 NET 4 5 进行
  • .NET 紧凑框架中的信号量

    不幸的是 使用 NET Compact Framework 时 System Threading 中没有信号量 我不确定为什么会这样 有人有想法吗 经过谷歌搜索后 我发现很多人给出了他们自己的实现 但他们中没有一个真正工作得很好 或者根本没
  • 如何使用 XmlSerializer 在大文档中插入节点

    我有一个很大的 XML 文档 我想使用XmlSerializer类来插入新元素 其内容来自使用 xsd exe 生成的 NET 类实例 这是问题的后续如何使用 XmlSerializer 反序列化大型文档中的节点 https stackov
  • 使用 System.IO.compressing.Gzip 压缩和解压缩非常大的文件

    我的问题可以用以下语句来描述 我希望我的程序能够压缩和解压缩选定的文件 我有非常大的文件 20 GB 可以安全地假设该大小永远无法装入内存 即使压缩后 压缩文件可能仍然无法放入内存 我想使用 System IO Compression Gz
  • Thread.sleep vs Monitor.Wait vs RegisteredWaitHandle?

    以下项目有不同的目标 但我很有趣知道它们如何 暂停 问题 Thread sleep 它会影响系统性能吗 它是否会占用线程的等待时间 关于什么Monitor Wait 他们 等待 的方式有何不同 他们的等待会占用一个线程吗 关于什么Regis
  • 如何在 TeamCity 的 .NET 项目中包含解决方案目录之外的依赖项

    我的解决方案目录之外有类库 因此我在 sln 文件 SomeDependency csproj 中有这样的引用 在 VS 中一切正常 但在尝试构建我的解决方案时 TeamCity 失败了 我猜它复制了所有解决方案目录 因此关系不再存在 这是
  • 使用 C# 使用应用程序密码登录 Office 365 SMTP

    在我们的 Office 365 公司帐户中实施两步身份验证之前 我的 C WPF 程序已成功进行身份验证并发送邮件 我使用了 SmtpClient 库 但现在我必须找到另一个解决方案 因为它不再起作用 我找不到任何使用 O365 应用程序密
  • 字节到二进制字符串 C# - 显示所有 8 位数字

    我想在文本框中显示一个字节 现在我正在使用 Convert ToString MyVeryOwnByte 2 但是 当字节开头有 0 时 这些 0 就会被删除 例子 MyVeryOwnByte 00001110 Texbox shows g
  • [程序名称].exe已停止工作

    我有一个基于 Framework 2 0 构建的 NET 应用程序 我已经为它构建了一个安装程序 并尝试在具有 3 5 的计算机上运行它 所有相关环境均在Windows 7上 该应用程序在我的开发机器上以 VS 调试模式完美运行 该机器也具
  • .NET 中安全身份的本地化

    我想在 NET 中实现一个用于服务 客户端通信的命名管道 并遇到了这段代码 http code msdn microsoft com windowsdesktop CSNamedPipeCommunication 33b2485c view
  • Visual Studio Intellisense 颜色编码不起作用

    现在 在我的代码中 突然有些代码的颜色未编码为 Visual Studio 经典主题颜色 我不确定我的代码中是否存在错误 但是当我定义某些属性时 例如 public class VideoEncodeTest AndroidPowerTes
  • Visual Studio 2010 的“线程”窗口中的 和 [Thread Destroyed] 详细信息

    我一直在尝试调试与一个应用程序的线程相关的一些问题 当我附加到应用程序时 我看到一个像这样的窗口 这个名为 Thread Destroyed 的线程是什么 应用程序代码肯定不会写这个名称 这意味着线程的调用堆栈不可用 采集引擎 线程在应用程
  • 在音频文件中查找音频样本(频谱图已存在)

    我正在努力实现以下目标 使用 Skype 拨打我的邮箱 有效 输入密码并告诉邮箱我要录制新的欢迎信息 有效 现在 我的邮箱告诉我在嘟嘟声后录制新的欢迎消息 我想等待蜂鸣声然后播放新消息 不起作用 我如何尝试实现最后一点 使用 FFT 和滑动
  • C# HTTP 请求解析器[重复]

    这个问题在这里已经有答案了 可能的重复 将原始 HTTP 请求转换为 HTTPWebRequest 对象 https stackoverflow com questions 318506 converting raw http reques
  • CLR 无法在 UWP 中创建基于 .NET 的 COM 对象

    我创建了一个类库 NET Framework 4 7 1 它实现了文本服务 ITfTextInputProcessorEx等 中TSF https msdn microsoft com en us library windows deskt
  • 如何更改特定元素的 XML 命名空间

    我有一些通过某些 WCF 消息的 xmlserialization 生成的 xml 集 现在我想创建一个通用方法 在其中提供 xml 文件名和前缀 例如mailxml12 然后在 xml 文件中 那些名称中没有任何命名空间前缀的元素应替换为
  • Chromium 中的 MP4 编解码器支持

    我们已将 Chromium 嵌入式框架集成到我们的 Windows 游戏中 以允许我们从应用程序内渲染网页 并且一切正常 除了 MP4 视频 据我所知 由于许可问题 Chromium 不包含此编解码器 但任何人都可以提供有关我们如何添加支持
  • 捕获 .aspx 和 .ascx 页面中的异常

    问题说明了一切 请看以下示例代码 ul li li ul
  • 包恢复失败。回滚包更改 - Serilog.AspNetCore

    我有一个 asp net Core 项目 我正在尝试向其中添加一个记录器 我选择了我在其他项目中使用过的 SeriLog 但是当我尝试添加 Serilog AspNetCore 我得到的软件包版本 2 0 0 包恢复失败 回滚 后端 的包更
  • 调整屏幕和字体设置的 WPF 应用程序(或者,我如何将 DLU 与 WPF 中的单元相关联?)

    在MFC中 对话框的设计使用DLUs http msdn microsoft com en us library bb847924 aspx 在 WPF 中 我们以 1 96 英寸为单位指定 虽然这确实会缩放窗口和视觉元素 但我们如何使 W

随机推荐

  • 如何使用 FTP 下载 R 包

    我需要在无法访问 Internet 的 Windows 7 PC 上支持 R 环境 我想下载 最终下载到 DVD 所有 5 000 个软件包的当前版本 以供这台 PC 上的 R 用户使用 是否有 FTP 脚本或其他好方法来下载 R 包的所有
  • 如何每500ms获取一次相机预览帧

    我正在开发示例应用程序 它通过 android 中的相机为我提供指向图像或对象的颜色代码 我的应用程序与此应用程序类似 我正在使用this为此的应用程序代码 使用此应用程序代码 我可以连续获取相机预览帧 并为我提供当前预览帧的颜色代码 我想
  • NotificationHub推送通知返回:从Token Provider获取的Token错误

    我有 Wp8 1 Silverlight 应用程序 它从 Mobileservice 旧的 azure 服务 接收推送通知 WNS 因此 由于新功能 我想更新到新服务 我现在已经创建 升级了一个新服务器以使用应用程序服务 移动应用程序 并使
  • 使用 Grand Central Dispatch,我如何检查是否有一个块已经在运行?

    我正在使用 GCD 从互联网上进行一些后台加载 除了一点缺陷之外 这效果很好 在我的应用程序中 我有 3 个选项卡 当单击任何选项卡时 GCD 开始为相应的选项卡进行后台加载 如果用户决定从第一个选项卡转到第二个选项卡 当 GCD 已开始下
  • 为什么这个 Powershell ForEach 循环每次迭代都会变慢?

    我的代码按预期工作 我真的很想知道是否有人知道为什么我下面描述的事情可能会发生 也就是说 如果有人有任何进一步优化日常工作的想法 我会本着每天都是上学日的精神感激地接受他们 该脚本正在查询我们所有的域控制器以获取最新的最后登录特定 OU 中
  • 为什么 PHP 需要显式引用“$this”来调用成员函数?

    差不多就这样了 大多数面向对象编程语言中的作用域可以很好地解析符号 而无需显式引用当前实例 即 PHP 中的 this 为什么 PHP 要求我在每次调用同一个类中的成员函数之前都加上 this 来解析函数调用的范围 考虑 this gt s
  • 为什么数据未绑定到我的 WPF 应用程序中的标签

    我正在做一个简单的DataBinding应用在WPF 在这个应用程序中 无论我输入什么TextBox named txtName 应该出现在Label 为此 我使用了绑定WPF 但它没有受到约束
  • 带有几个小数位的倒计时,在 Swift 中使用 NSTimer

    例如 我想制作一个具有从 10 0000000 开始的计时器的应用程序 并且我希望它能够完美倒计时 到目前为止 这是我的代码 import UIKit class ViewController UIViewController IBOutl
  • 如何列出 Google 云端硬盘文件夹的所有文件、文件夹、子文件夹和子文件

    有什么想法如何在单个查询中查询所有子项和子项的子项吗 Update 这似乎是一个简单的问题 我怀疑是否有一个简单的解决方案 查询文件夹和文件树可能会消耗大量 API 调用 因此 为了解决我的问题 我使用单个查询来列出所有者的所有文件和文件夹
  • 获取 Discord.JS 机器人的正常运行时间

    我现在正在为运行时创建一个 Discord 机器人命令 我想知道运行时最紧凑 且仍然正确 的方法是什么 以捕获机器人实际在线的时间并以 24 小时格式返回 您无需在机器人启动时手动保存 您可以使用client uptime你会得到多少毫秒机
  • window.location 和 document.location 有什么区别?

    window location 和 document location 有什么区别 它们都应该引用同一个对象吗 根据 W3C 的说法 它们是相同的 实际上 为了跨浏览器安全 您应该使用window location而不是document l
  • 模型更改后角度视图不更新

    我有一个简单的角度应用程序 可以使用下面的 JavaScript Web 音频对象来播放音频 应用程序组件 ts export class AppComponent title media player audio currentTime
  • 在egrep的正则表达式中管道bash输入参数

    这是我尝试运行的脚本 bin bash charlist 1 possible input cat wordlength 2 possible input 3 cat nounlist egrep b charlist b wordleng
  • Java&Mongo:获取字段存在的对象

    情况 我有文档集合 每个文档都包含这样的字段 id ObjectId userId String 但它也可以是字段 files Object 当我这样做时 final Query query new Query query fields i
  • 在R中通过grepl合并两个数据帧

    假设我有两个数据框 df1 lt data frame x c abc def ghi NA y 1 4 df1 x y 1 abc 1 2 def 2 3 ghi 3 4 NA 4 df2 lt data frame x c a i z
  • 如何检查MySQL连接是否经过SSL加密?

    我正在使用 MySQL 官方网站的 MySQL NET 连接器 我正在尝试从我的 C 程序到 Mysql 数据库建立安全的 SSL 连接 Mysql 服务器允许使用 SSL 连接 have ssl变量设置为yes and ca cert s
  • Ubuntu:等待网络连接并执行 bash 命令

    在Ubuntu 最新的发行版很好 中 我想重新启动路由器 并在bash脚本中我想要一个命令来等待网络链接再次启动 当它检测到这一点时 它必须启动bash 命令 我可以通过某种轮询循环来实现这一点 但理想的解决方案是使用一个 bash 命令
  • C++:将十六进制转换为十进制

    I m looking for a way to convert hex hexadecimal to dec decimal easily I found an easy way to do this like int k 0x265 c
  • 在 Ansible 中使用 with_dict 循环遍历注册变量

    如何引用已注册值的字典元素 我的 Ansible 剧本如下所示 command echo item with dict foo bar baz register echos 注册变量 echos 将是一个字典 changed true ms
  • 将多个 mp3 文件“叠加”而不是按顺序合并到 .net 中的单个 mp3 文件中?

    我最近对这个问题的最新讨论的更新显示在底部 好吧 我正在尝试构建一个平台 我的 silverlight 应用程序将把不同的乐器音频合并到一个文件中并输出音乐音频 我现在想做的是将多个 mp3 文件合并为一个 mp3 文件 但最终的 mp3