【问题标题】:Understanding sox's progress details了解 sox 的进度细节
【发布时间】:2013-05-04 13:05:31
【问题描述】:

我正在尝试从 mp3 文件中删除静音,并解析进度详细信息:

G:\testing\test>sox -S trim.mp3 trim2.mp3 reverse silence 1 0.1 0.1% reverse

Input File     : 'trim.mp3'
Channels       : 2
Sample Rate    : 44100
Precision      : 16-bit
Duration       : 00:04:24.06 = 11644870 samples = 19804.2 CDDA sectors
Sample Encoding: MPEG audio (layer I, II or III)

In:100%  00:04:23.96 [00:00:00.09] Out:11.6M [      |      ] Hd:0.0 Clip:400
sox sox: trim2.mp3: output clipped 400 samples; decrease volume?
Done.

G:\testing\test>

我应该能够解析这些数据,同时将Out:11.6M 数据作为我的进度,但是这个文件的文件大小实际上是4.03MB。也许这些数据与输出文件大小无关?

如何正确判断编码任务的进度?

【问题讨论】:

    标签: windows sox


    【解决方案1】:

    你是对的,Out 的值不是关于文件大小,而是关于样本的数量。 Duration 字段中提到的大约 11644870 个样本:大约 264 秒乘以每秒 44100 个样本。对于未压缩的输出,文件大小主要与样本数量成正比(例如,在 16 位立体声,每个样本 4 字节,加上标题大小)。对于压缩输出,关系不那么严格。

    不过,Out 值不一定是一个好的进度指示器。在您的情况下,由于反转,SoX 在开始编写任何内容之前已经处理了所有音频。

    还请注意,SoX 首先将输入转换为内部 (PCM) 表示,然后对其进行处理,然后将其重新转换为输出格式。由于您正在处理已被有损压缩的文件,因此音质可能会受到轻微影响,如果您重新处理结果(generation loss),音质可能会受到轻微影响。

    【讨论】:

    • 谢谢。这就是我计算最终进度的方式:In_Value*0.5+(Out_Value/samples)*0.5.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 2014-10-05
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多