我试图连接15个wav音频文件,记录为24位,96kHz,线性PCM。我用ffmpeg,shntool和sox进行了实验,结果各不相同。
这些文件是由Zoom H2n记录器创建的,它将连续15小时的记录分成几个文件(实时)以适应SD存储卡规格。
前14个文件分别为2,147,385,344字节(1:02:08.04及时),最后一个文件为1,838,248,046字节(时间为53:11.35)。原始文件报告的比特率为4,608 kb / s(使用ffmpeg -i)。
使用ffmpeg
使用文件名创建文本文件:
printf "file '%s'\n" ./*.WAV > mylist.txt
连接文件:
ffmpeg -f concat -i mylist.txt -c copy output-ffmpeg.wav
这将生成一个31,901,151,444字节的文件,但报告时间仅为53:08。ffmpeg -i报告的比特率为80,049 kb / s,远远高于原来的4,608 kb / s。
使用shntool
加入文件:
shntool join -r none 01.wav 02.wav [etc]
这将生成一个31,901,151,386字节的文件 - 与ffmpeg连接不同 - 但也报告为53:08.16及时。同样,ffmpeg -i报告的比特率为80,049 kb / s,远远高于原来的4,608 kb / s。
使用Sox
连接文件:
sox 01.wav 02.wav [etc] output-sox.wav
这将生成一个31,901,151,422字节的文件 - 与ffmpeg和shntool不同 - 但报告为01:02:08.26及时。ffmpeg -i报告的比特率为68,452 kb / s,远远高于最初的4,608 kb / s,但与ffmpeg或shntool转换不同。
问题
1)如何让文件反映实际时间?将这个31 Gb / ~15小时的录音带入认为仅长约53分钟的音频软件可能会有问题。
2)为什么三个连接文件大小不同?是否有我应该使用的标志或设置,例如,由于某种原因填充长度?不同的文件大小是否为文件认为它们只有53:08或01:02:08长的线索?
当我第一次看到53:08时,我想,啊,它将最终文件的时间长度写入标题 - 但最终文件的时间长度实际上是53:11。当我第一次看到01:02:08.26时,我想,啊,它正在写第一个文件的时间长度,但遗憾的是,没有(接近但不准确)。
似乎我最好的线索是连接文件的错误(?)比特率。我很惊讶流副本或文件串联改变了这一点。也许这只是一个元数据错误?