如何在R中将8GB WAVE文件持续24h分割成较小的文件持续1h?

问题描述

我想将8 GB(持续24小时)WAVE文件拆分为较小的WAVE文件(持续1小时)。我大约有800个大文件要分割,因此无法手动完成。

我尝试使用以下软件包:tuneR,seewave和phonTools。下面是我在R中的脚本片段:

example1=readWave("example.wav",from=0,to=1,units= "hours")
savewav(example1,f=48000)

example2=readWave("example.wav",from=22,to=23,units= "hours")
savewav(example2,f=48000)

当我运行示例1时,一切都是正确的。我收到了一个小时的持久WAVE文件。 问题是稍后拆分8 GB文件,例如example2。我在控制台中收到注释:readBin(con,int,n = N,size = bytes,有符号=(bytes!= 1),':无效的'n'参数。

R可能与此文件的大小有关,该问题太大,因为WAVE限制为4GB。我确信此文件将包含所有24小时的录音,因为我在音频软件Audacity中将文件从WAVE更改为FLACK,并且所有数据都已保存在其中。

还有其他解决方案可以在R中吐出这么大的文件吗?

解决方法

使用ffmpeg:

ffmpeg -i example.wav -f segment -segment_time 3600 -c copy out%03d.wav

参考:https://www.ffmpeg.org/ffmpeg-formats.html#segment_002c-stream_005fsegment_002c-ssegment