将多个 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 文件中? 的相关文章

  • 以线程安全的方式获取随机数

    这是一篇描述随机数线程安全性的好文章 以线程安全的方式获取随机数 http blogs msdn com b pfxteam archive 2009 02 19 9434171 aspx 但我坚持使用 RandomGen2 示例 publ
  • 如何在颠覆合并期间忽略文件夹

    我有一大堆更改需要合并到我的分支中 但我想在合并过程中忽略特定文件夹 是否可以使用 Subversion 来做到这一点 如果是这样那我该怎么办呢 编辑 我想忽略的文件夹位于存储库中 但在合并期间我不会对此文件夹进行更改 您可以像平常一样进行
  • 如何使用 vb.net 将数据插入 Access 表?

    我想在 Access 数据库中插入一个新行 我正在考虑做类似的事情 oConnection new Connection connectionstring oTable oCennection table Orders oRow oTabl
  • 基于 Web.Config 使用的 GAC 程序集版本

    Good Day 我有一个在 GAC 中使用自定义程序集的项目 为了能够使用它 我在中添加了对我的项目的引用 C WINDOWS Microsoft NET assembly GAC MSIL JOHN CommonLib v4 0 1 0
  • 无法在.net core中使用WCF WSHttpBinding

    我正在尝试将我的项目从 net 移动到 net core 我最初在 net 中使用 WCF WSHttpBinding 服务 但无法在 net core 中使用相同的服务 我尝试使用 BasicHttpBinding 在客户端与 WsHtt
  • C# 枚举 - 根据掩码检查标志

    我有以下枚举标志 Flags private enum MemoryProtection uint None 0x000 NoAccess 0x001 ReadOnly 0x002 ReadWrite 0x004 WriteCopy 0x0
  • 合并后 Git 分支和提交历史记录

    我正在开发一个项目 单独 对于我开发的每个功能 我都会创建一个新分支 处理该功能 然后将其合并到 master 中 所以通常我不会同时在两个不同的分支上工作 也不会在一个分支上工作时接触master 当我合并一个分支时 我看到 使用gitx
  • WebClient读取错误页面的内容

    我有一个加载页面内容的应用程序 我使用 WebClient 类 即使服务器返回 404 500 等错误 我也需要检索内容 我需要这样的东西 WebClient wc new WebClient string pageContent try
  • 有没有办法设置 log4net 内存附加程序可以包含的最大错误消息数?

    我想向根记录器添加一个内存附加程序 以便我可以连接到应用程序并获取最后 10 个事件 我只想保留最后 10 个 我担心这个附加程序会消耗太多内存 该应用程序设计为 24 7 运行 或者还有别的办法吗 您需要创建一个自定义附加程序来存储有限数
  • 为什么WCF中不允许方法重载?

    假设这是一个ServiceContract ServiceContract public interface MyService OperationContract int Sum int x int y OperationContract
  • 反序列化嵌套类时不需要 xmlns=''

    我在尝试在服务器上序列化类 将其发送到客户端并在目标上反序列化时遇到问题 在服务器上我有以下两个类 XmlRoot StatusUpdate public class GameStatusUpdate public GameStatusUp
  • 在 System.Xml.XPath 中启用 XPath2 查询(XPathException:无效令牌)

    Microsoft 的 System Xml XPath nuget package 可用于 NET 4 6 声称支持 XPath 1 0 和 2 0 德文档 https msdn microsoft com en us library s
  • 确定最接近的已知颜色

    我允许我的应用程序的用户选择自定义颜色 并希望有一种方法来显示每种颜色的友好名称 而不是显示十六进制代码的文本表示形式 我如何找到最近的System Drawing Color对于给定的十六进制代码 希望这对某人有帮助 Public Fun
  • ASP.NET MVC ActionFilterAttribute 在模型绑定之前注入值

    我想创建一个自定义操作过滤器属性 该属性在模型绑定期间可访问的 HttpContext 项中添加一个值 我尝试将其添加到 OnActionExecuting 中 但似乎模型绑定是在过滤器之前执行的 你知道我该怎么做吗 也许模型绑定器中有一个
  • 如何获取可用系统内存的大小?

    C NET 中是否可以获取系统可用内存的大小 如果是的话怎么办 Use Microsoft VisualBasic Devices ComputerInfo TotalPhysicalMemory http msdn microsoft c
  • 注销租约抛出 InvalidOperationException

    我有一个使用插件的应用程序 我在另一个应用程序域中加载插件 我使用 RemoteHandle 类http www pocketsilicon com post Things That Make My Life Hell Part 1 App
  • 如何在 .NET Framework 2.0 中模拟“Func<(Of <(TResult>)>) 委托”?

    我尝试使用这个类代码项目文章 http www codeproject com KB threads AsyncVar aspx在 VB NET 和 NET Framework 2 0 中 除了这一行之外 所有内容似乎都可以编译Privat
  • Directory.Delete 之后 Directory.Exists 有时返回 true ?

    我有非常奇怪的行为 我有 Directory Delete tempFolder true if Directory Exists tempFolder 有时 Directory Exists 返回 true 为什么 可能是资源管理器打开了
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com

随机推荐

  • 如何使用 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