首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Sox:连接多个音频文件,没有间隔

Sox:连接多个音频文件,没有间隔
EN

Stack Overflow用户
提问于 2014-08-13 00:00:14
回答 3查看 30.8K关注 0票数 15

我正在使用SoX连接多个(最多25个)音频文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sox first.mp3 second.mp3 third.mp3 result.mp3

将给定的文件连接到一个文件中。但不幸的是,result.mp3中的这些文件之间有很小的时间间隔。有没有办法消除这一差距?

在通过合并多个音频(相同长度/格式/速率)将它们连接之前,我正在创建first.mp3、second.mp3等:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sox -m drums.mp3 bass.mp3 guitar.mp3 first.mp3

我如何检查并确保所有这些文件都没有时间间隔?(合并和连接)

我需要实现所有连接文件的无缝播放(在浏览器中一个接一个地播放它们,工作正常)。

谢谢你的帮助。

编辑:

我正在运行的命令的确切示例(没有真正的文件名)现在是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sox "|sox -m file1.mp3 file2.mp3 file3.mp3 file4.mp3 -p" "|sox -m file1.mp3 file6.mp3 file7.mp3 -p" "|sox -m file5.mp3 file6.mp3 file4.mp3 -p" "|sox -m file0.mp3 file2.mp3 file9.mp3 -p" "|sox -m file1.mp3 file15.mp3 file4.mp3 -p" result.mp3

这将合并文件,并将它们直接连接到级联命令中。生成的mp3 (result.mp3)在连接的文件之间有如此微小的延迟。任何想法都很受欢迎。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-04 05:17:28

这是我对你的问题的猜测:

  • sox在串联过程中不增加时间间隔,
  • 但是,它会在其他操作中增加时间间隔,例如,如果您在连接之前进行了转换。

为了了解发生了什么,我建议您每次检查所有文件的持续时间(例如,可以使用soxi )来查看发生了什么。

如果它不起作用(在连接过程中增加了时间间隔),请让我再猜一猜:

  • Sox添加时间间隔,因为您的样本在文件的开始或结束并不接近于零。

要解决这个问题,您可以使用非常短的淡出-在您的文件淡出。

此外,要强制sox输出具有良好定义长度的文件,可以使用以下trim参数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sox filein.mp3 trim 0 duration fileout.mp3
票数 6
EN

Stack Overflow用户

发布于 2015-02-14 14:48:13

要做到这一点,最好的方法--尽管帮助最少--就是不要将MP3文件用作源文件。WAV、FLAC或M4A文件没有这个问题。

MP3s不是由固定速率的样本组成的,因此,裁剪出任意长度的部分将不像您所期望的那样工作。除非编码器是智能的(如lame),否则通常会在MP3文件的音频开始或结束时出现空白。我做了一个样本0.98s长的测试(确切地说是73.5 CDDA帧,许多MP3编码器使用帧作为最小样本长度)。然后,我用三个不同的MP3编码器(lame、sox和古代发亮)对样本进行编码,然后用三个解码器(lame、sox和madplay)对这些文件进行解码。下面是示例长度与原始样本的比较方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 Enc.→Dec.          Length     Samples  CDDA Frames
 -----------------  ---------  -------  -----------
 shine→lame         0.95"      42095    71.5901
 shine→madplay      0.97"      42624    72.4898
 shine→sox          0.97"      42624    72.4898
 lame→lame          0.98"      43218    73.5000
*Original           0.98"      43218    73.5000
 sox→sox            0.99"      43776    74.4490
 sox→lame           1.01"      44399    75.5085
 lame→madplay       1.02"      44928    76.4082
 lame→sox           1.02"      44928    76.4082
 sox→madplay        1.02"      44928    76.4082

只有由lame编码和解码的文件才有相同的长度(主要是因为lame插入了一个长度标签来纠正这些太短的示例,并且知道如何解码它)。无论我用什么解码器,由sox编码的所有东西都有一个很小的缺口。因此,加入这些文件将导致微小的点击。

您的浏览器可能是混合和重叠的源文件非常轻微,这样你就不会听到点击。无缝隙回放很难正确地完成。

票数 11
EN

Stack Overflow用户

发布于 2014-08-13 04:13:32

首先你真的需要检查你的文件的开始和结束是否有沉默,我不知道sox是否能做到,但是你需要检查开始和结束音频信号的能量(均方根,dB),并切断开始和结束的沉默,要连接没有间隙的音频文件,你需要在你的信号中应用一个窗口函数来像fadein/fadeout那样工作,然后将一个开始和另一个结束交叉。

sox提供了一个用于交叉淡出的splice函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
splice [−h|−t|−q] { position[,excess[,leeway]] }
Splice together audio sections. This effect provides two things over simple audio concatenation: a (usually short) cross-fade is applied at the join, and a wave similarity comparison is made to help determine the best place at which to make the join.

检查文档这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25280958

复制
相关文章
linux中的vi编辑器
vim文字处理器 linux 下的vi 是一种文字编辑器,后来的升级版本是vim。vi 分为三种模式:一般模式、编辑模式、命令命令模式。它们之间的关系如下: 下面分类别解析命令: ``(注意是~那个
小小科
2018/05/04
4.3K0
linux中的vi编辑器
VI中的多行删除与复制
VI中的多行删除与复制 法一: 单行删除,:1(待删除行)d 多行删除 ,:1,10d 法二: 光标所在行,dd 光标所在行以下的N行,Ndd 方法1: 光标放到第6行, 输入:2yy 光标放到第9行, 输入:p 此方法适合复制少量行文本的情况,复制第6行(包括)下面的2行数据,放到第9行下面。 方法2: 命令行模式下输入 6,9 co 12 复制第6行到第9行之间的内容到第12行后面。 方法3: 有时候不想费劲看多少行或复制大量行时,可以使用标签来替代 光标移到起始行,输入ma 光标移到结束行,输入mb
sanmutongzi
2020/03/04
5.9K0
vi编辑器
打开文件之后默认就是命令模式,可以通过方向键移动光标的位置,也可以通过 k/j/h/l 上下左右移动光标的位置。
Qiang
2019/07/04
1.5K0
vi编辑器
vim是linux上使用最多的编辑器,熟悉这个编辑器的使用,可以大大提高我们的工作效率。
老雷PHP全栈开发
2020/07/02
1.4K0
vi编辑器
vi是UNIX和Linux系统内嵌的标准正文编辑器,是一种交互类型的正文编辑器,是一种命令行方式的正文编辑器,可以在图形界面没有启动的情况下工作,是全屏幕正文编辑器,可以用来创建和修改正文文件,操作系统管理和维护时非常有用,vi是visual interface to the ex editor 的前两个单词的首字母。使用vi编辑一个正文文件时,vi将文件中的所有正文放入一个内存缓冲区,所有的操作都是在这个内存缓冲区中进行的,可以选择将所做的修改写到磁盘上,也可以放弃这些修改,在Red Hat Linux和Oracle Linux系统上的vi编辑器实际上是vim。vim是vi improved的缩写、是一种开源的vi编辑器而且加入了许多扩展的特性。
狼啸风云
2019/01/18
2.9K0
vi编辑器配置
vi编辑器默认情况下没有行号、语法高亮、tab键退格非4位等等,需要根据需求手动编辑一下
刘开心_1266679
2019/02/14
8740
015— 删除每行中的最大值【LeetCode2500】
吃猫的鱼Code
2023/08/09
2130
015— 删除每行中的最大值【LeetCode2500】
Linux的VI编辑器
:q     退出    :q!    强行退出(不存盘)    :wq   强制性写入文件并退出。即使文件没有被修改也强制写入,并更新文件的修改时间。  :x     写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间,否则不会更新文件修改时间。 用ESC键只能切换到命令状态
阳光岛主
2019/02/19
3.2K0
非正常关闭 vi 编辑器产生 swp 文件怎么删除
问题描述: 使用 vi 编辑器的时候,有时候系统提示发现交换文件 swp 已存在,导致无法编辑当前文件。那么swp 文件怎么删除呢? 分析问题: 当你打开一个文件,vi 编辑器就会生成这么一个.swp 文件防止出现意外情况(类似微软 word 的缓存文件机制),如果正常退出那么这个 swp 文件将会自动删除。 当你强行关闭 vi 或者 SSH 连接时,比如电源断了或者使用了 Ctrl+ZZ,vi 自动生成一个.swp 文件,下次你再编辑时,就会出现一些提示。 解决问题: 按照 vi 编辑器的提示,有两种情况
魏艾斯博客www.vpsss.net
2018/06/01
2.3K0
linux中vi编辑器保存文件命令_linux用vi编辑文件
1、首先进入Linux的命令行界面.在目录下创建一个用于测试的文本文件(touch filename).这里就新建了一个test12文本文件.当然这个名字是可以随便取得.
全栈程序员站长
2022/11/08
19.1K0
linux中vi编辑器保存文件命令_linux用vi编辑文件
编辑器-vi、vim的使用
vi编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下。由于不需要图形界面,vi是效率很高的文本编辑器。尽管在Linux上也有很多图形界面的编辑器可用,但vi在系统和服务器管理中的功能是那些图形编辑器所无法比拟的。
狼啸风云
2019/10/28
1.4K0
编辑器-vi、vim的使用
linux vi编辑器的使用
vi 文件名 +行数 ( 到达指定行数的位置) vi 文件名 + (直接定位到文件末尾)
云缓缓知我意
2021/04/15
2.3K0
Vi编辑器 转
vi编辑器通常被简称为vi,而vi又是visual editor的简称  。vi编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下。由于不需要图形界面,vi是效率很高的文本编辑器。尽管在Linux上也有很多图形界面的编辑器可用,但vi在系统和服务器管理中的功能是那些图形编辑器所无法比拟的。它在Linux上的地位就像Edit程序在DOS上一样。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。
wuweixiang
2018/08/14
5740
vi编辑器参数
竖线(|)代表光标的位置;波浪号(~)代表该行没有任何内容。如果没有 ~,也看不到任何内容,那说明这一行肯定是有空白字符(空格、tab 缩进、换行符等)或不可见字符。
用户4870038
2021/02/05
9290
Linux 学习VI编辑器
命令模式、插入模式 :wq u 回退 :q! :w /root/file 保存到别的地方
用户5760343
2022/05/20
7.6K0
Linux 学习VI编辑器
Vi编辑器使用教程
编辑器分为三种模式:(命令行模式、末行模式、插入模式) 命令行模式 进入插入模式 i:从光标当前位置开始输入 a:从目前光标所在位置的下一个位置开始输入 o:在光标所在位置的下一行首输入 I:光标所在行首插入 A:行末插入 O:在上一行插入 s:删除光标位置的一个字符然后插入 S:删除光标所在行,然后插入 插入模式到命令行 按下ESC键就可以了 移动光标(听说很正规的Linux都这样用) 数字“0”:光标移动到所在行的行首 ”G“:移动到文本的最后一行 $:移动到行尾 ^:移动到行
苦咖啡
2018/05/07
1.1K0
Linux VI文本编辑器
  学会使用 vi 编辑器是学习 Linux 系统的必备技术之一,因为一般的 Linux 服务器是没有 GUI 界面的,Linux 运维及开发人员基本上都是通过命令行的方式进行文本编辑或程序编写的。 vi 编辑器是 Linux 内置的文本编辑器,几乎所有的类 unix 系统中都内置了 vi 编辑器,而其它 编辑器则不一定,另外很多软件会调用 vi 编辑进行内容编写,例如 crontab 定时任务。较之 于其它编辑器或 GUI 编辑器,vi 编辑速度是最快的。VIM 是它的增强版本,VI 有三种基本工 作模式,分别是:
全栈程序员站长
2022/09/18
2.9K0
Linux VI文本编辑器
文本编辑器及文本处理 文本编辑器介绍 常见的Linux文本编辑器有: emacs nano gedit kedit vi vimLinux文本编辑器-emacs emacs是一款功能强大的
emacs是一款功能强大的编辑器,与其说是一款编辑器,它更像一个操作系统。emacs带有内置的网络浏览器、IRC客户端、计算器,甚至是俄罗斯方块。当然,emacs需要在图形化界面的Linux中使用。
青灯古酒
2023/10/16
8050
华为认证欧拉openEuler-HCIA文本编辑器及文本处理
emacs是一款功能强大的编辑器,与其说是一款编辑器,它更像一个操作系统。emacs带有内置的网络浏览器、IRC客户端、计算器,甚至是俄罗斯方块。当然,emacs需要在图形化界面的Linux中使用。
青灯古酒
2023/10/16
4250
点击加载更多

相似问题

vi编辑器中的^M字符

11

如何在Vi编辑器中删除CRLF

21

如何在VI编辑器中删除选定的文本?

289

如何在vi编辑器中删除多行特殊字符

10

vi(m)中的目录

117
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文