在 SOX 中混合带有偏移量的音轨

Posted

技术标签:

【中文标题】在 SOX 中混合带有偏移量的音轨【英文标题】:Mix Audio tracks with offset in SOX 【发布时间】:2011-06-03 02:31:38 【问题描述】:

在 ASP.Net 中,我使用 FFMPEG 将 Flash 媒体服务器上的 flv 文件转换为需要混合成单个 MP3 文件的 wav。我最初完全使用 FFMPEG 进行了尝试,但最终放弃了混合步骤,因为我不相信可以将仅音频轨道合并到单个结果文件中。我很想错。

我现在使用 FFMPEG 访问 FLV 文件并将音轨提取为 wav,以便 SOX 可以混合它们。问题是我必须将其中一个音轨偏移几秒钟,以便它们同步。每个文件是学生和老师之间对话的一半。例如,teacher.wav 可能需要在 student.wav 之后 3.3 秒开始。我只能弄清楚如何在两个轨道同时开始的地方将文件与 SOX 混合。

在这一点上我最好的尝试是:

ffmpeg -y -i rtmp://server/appName/instance/student.flv -ac 1 student.wav 
ffmpeg -y -i rtmp://server/appName/instance/teacher.flv -ac 1 teacher.wav 

sox -m student.wav teacher.wav combined.mp3 splice 3.3

这些工具 (FFMEG/SoX) 是根据我的最佳研究选择的,但不是必需的。任何可行的解决方案都将允许 ASP.Net 服务输入两个 FMS flv,并使用开源或免费工具创建组合 MP3。

编辑: 我能够使用 SOX 中的 delay 开关来抵消文件。

sox -M student.wav teacher.wav combined.mp3 delay 2.8

如果有人有比组合的 FFMPEG/SOX 解决方案更好的方法,我会留下这个问题。

【问题讨论】:

"sox -M student.wav teacher.wav combined.mp3 delay 2.8" 如果每个音频都有一个通道,则解决方案有效。如果每个样本都是立体声的,我相信你可以做“sox -M student.wav teacher.wav combined.mp3 delay 2.8 2.8 0 0”。我认为 sox 会自动改变音量/增益,并且必须在命令中添加其他内容才能使声音正确...感谢您的解决方案! Nvm,这可能是一种更好的通用方法:***.com/questions/9327262/sox-mix-and-delay/… 【参考方案1】:

对于它的价值,这应该可以通过-itsoffsetamix filter 的组合实现,但bug with -itsoffset 会阻止它。 如果成功了,该命令将如下所示:

ffmpeg -i student.flv -itsoffset 3.3 -i teacher.flv -vn -filter_complex amix out.mp3

【讨论】:

【参考方案2】:

混合非常简单:how to mix two audio channels?

【讨论】:

【参考方案3】:

我建议你应该使用闪存。 听起来可能很奇怪,如果我错了,请纠正我,但借助 Flash 的新多媒体功能,您可以混合几个音轨。

我不确定,但我只是想帮助你, theese 2 链接可以帮助您实现目标(我猜特别是第二个链接);

http://3d2f.com/programs/25-187-swf-to-mp3-converter-download.shtml

http://blog.debit.nl/2009/02/mp3-to-swf-converter-in-actionscript-3/

【讨论】:

以上是关于在 SOX 中混合带有偏移量的音轨的主要内容,如果未能解决你的问题,请参考以下文章

带有索引/偏移量的Ruby gsub?

Scrollview 不会滚动过去的带有偏移量的视图

滚动到带有偏移量的 div ID

如何在 PHP 脚本中混合音轨?

具有自定义数据源偏移量的 Android 分页库 RecyclerView 中的项目

时区分钟偏移量的 TimeZoneInfo