在python中将多个声音文件写入单个文件

时间:2011-05-13 22:28:06

标签: python file audio writing

我有问题。我有三个声音文件,例如a.wav,b.wav和c.wav。我想把它们写成一个单独的文件,例如all.xmv(扩展名也可能不同),当我需要时,我想提取其中一个,我想播放它(例如我想播放a.wav并提取它形成all.xmv)。

我怎么能在python中做到这一点。我听说在Delphi中有一个名为blockwrite的函数,它可以完成我想要的东西。 python中是否有一个函数,就像Delphi中的blockwrite一样,或者如何编写这些文件并进行播放?

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:0)

如果存档的想法(顺便提一下,你的问题的最佳答案)不适合你,你可以将来自多个文件的数据融合到一个文件中,例如:通过编写连续的二进制数据块(从而创建一个未压缩的存档!)

让路径成为应该连接的文件列表:

import io
import os

offsets = [] # the offsets that should be kept for later file navigation
last_offset = 0

fout = io.FileIO(out_path, 'w')
for path in paths:
    f = io.FileIO(path) # stream IO
    fout.write(f.read())
    f.close()
    last_offset += os.path.getsize(path)
    offsets.append(last_offset)       
fout.close()

# Pseudo: write the offsets to separate file e.g. by pickling
# ...

# reading the data, given that offsets[] list is available
file_ID = 10                   # e.g. you need to read 10th file
f = io.FileIO(path)    
f.seek(offsets[file_ID - 1])   # seek to required position 
read_size = offsets[filed_ID] - offsets[file_ID - 1]  # get the file size
data = f.read(read_size)       # here we are! 
f.close()