我正试图修剪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
。也许这些数据与输出文件大小无关?
如何正确推断编码任务的进度?
答案 0 :(得分:1)
你是对的,Out
值不是文件大小,而是样本数。它大约是Duration
字段中提到的11644870个样本:大约264秒,每秒44100个样本。对于未压缩的输出,文件大小大部分与采样数成比例(例如,16位立体声,每个采样4个字节,加上标题大小)。对于压缩输出,关系不太严格。
Out
值不一定是一个好的进度指标。在您的情况下,由于反转,SoX将在开始编写任何内容之前处理完所有音频。
另请注意,SoX的工作原理是首先将输入转换为内部(PCM)表示,然后对其进行处理,然后将其新转换为输出格式。由于您正在处理已经有损压缩的文件,因此声音质量可能略有下降,如果您重新处理结果(generation loss),则会更多。