使用SOX混合具有偏移量的音频轨道

5

我正在使用FFMPEG从Flash Media Server上的FLV文件中提取音频轨道并将其转换为WAV格式,以便后续使用SOX进行混合。问题在于,我必须将其中一个音频轨道向后偏移几秒钟,以使它们同步。每个文件都是学生和老师之间对话的一半。例如,teacher.wav可能需要在student.wav之后3.3秒开始。我只能找到让两个音轨同时开始混合的SOX方法。

我目前的最佳尝试是:

从ASP.Net开始,我使用FFMPEG将Flash Media Server上的FLV文件转换为WAV文件,然后使用SOX进行混合。由于我认为无法将仅包含音频的轨道组合成单个结果文件,因此我放弃了仅使用FFMPEG进行混合的尝试。但我很希望自己是错的。

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会自动修改音量/增益,但必须向命令添加其他内容以使其听起来正确...感谢您提供的解决方案! - sequenceGeek
不用管了,这可能是一个更好的通用方法:https://dev59.com/rWDVa4cB1Zd3GeqPeYuI#12378408 - sequenceGeek
3个回答

1

就目前而言,使用-itsoffsetamix filter的组合应该是可行的,但是-itsoffset存在一个错误,导致无法实现。如果它能够正常工作,命令看起来应该像这样:

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

0

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接