首页 > 解决方案 > 如何将波形切片导出到每个样本与原始文件相同的位

问题描述

我正在通过一个包含新文件名、长度和版本的字典循环浏览一个大型波形文件。循环将各个切片导出为文件:

mix.export(key, format='wav')

但是,它将原始 24 位文件转换为 32 位切片。我一直在使用专业工具来将文件恢复到 24,因为我无法弄清楚 ffmpeg 设置或将切片放入子进程中。

我尝试了这个主题的几种变体:

mix.export(key, format='wav', codec='pcm_s24le')

还有这个:

mix.export(k, format='wav', parameters=['ffmpeg', '-i', '-acodec', 'pcm_s24le', '-ar', '48000'])

我似乎无法让各个切片在以下子流程调用中工作。key是键值对中的文件名。这在 32 位导出中效果很好,但不确定如何在切片的临时文件(例如/var/folders/vc/q7jggn7900l099w45463lgx40000gn/T/tmpw_6mxyg8需要调用)时使其工作。

subprocess.call(['ffmpeg', '-i', key, 
                 '-acodec', 'pcm_s24le', '-ar', '48000', 'output.wav'])

希望与原始输入格式完全相同的切片:

mix_file = AudioSegment.from_wav(file_name)

标签: pythonffmpegwavepydub

解决方案


推荐阅读