Python 如何在使用pygame.mixer.music打开文件时使用ffmpeg覆盖文件

Python 如何在使用pygame.mixer.music打开文件时使用ffmpeg覆盖文件,python,audio,ffmpeg,pygame,Python,Audio,Ffmpeg,Pygame,我有一个有趣的情况,我想通过subprocess.check_调用使用ffmpeg转换大量音频片段,然后使用pygame.mixer.music.play播放它们。 但是因为在转换所有文件时会有很多小文件,所以每次我都想覆盖该文件,称之为tmp.wav 转换过程如下: outfilename = "tmp.wav" proc_args = ["ffmpeg"] proc_args += ["-ss", str(begin / 1000)] proc_args += ["-i", os.path

我有一个有趣的情况,我想通过subprocess.check_调用使用ffmpeg转换大量音频片段,然后使用pygame.mixer.music.play播放它们。 但是因为在转换所有文件时会有很多小文件,所以每次我都想覆盖该文件,称之为tmp.wav

转换过程如下:

outfilename = "tmp.wav"
proc_args  = ["ffmpeg"]
proc_args += ["-ss", str(begin / 1000)]
proc_args += ["-i", os.path.join(audiodir, infilename)]
proc_args += ["-to", str(duration / 1000)]
proc_args += ["-ar", str(AUDIORATE)] # sample frequency (audio rate)
proc_args += ["-y"]
proc_args += [outfilename]
DEVNULL = open(os.devnull, 'wb')
try:
    subprocess.check_call(proc_args, stdout = DEVNULL, stderr = DEVNULL)
    # print "Converting audio succeeded."
except subprocess.CalledProcessError as e:
    print "Converting audio failed."
    return 0.
pygame.mixer.music.load(outfilename)
pygame.mixer.music.play()
游戏内容如下:

outfilename = "tmp.wav"
proc_args  = ["ffmpeg"]
proc_args += ["-ss", str(begin / 1000)]
proc_args += ["-i", os.path.join(audiodir, infilename)]
proc_args += ["-to", str(duration / 1000)]
proc_args += ["-ar", str(AUDIORATE)] # sample frequency (audio rate)
proc_args += ["-y"]
proc_args += [outfilename]
DEVNULL = open(os.devnull, 'wb')
try:
    subprocess.check_call(proc_args, stdout = DEVNULL, stderr = DEVNULL)
    # print "Converting audio succeeded."
except subprocess.CalledProcessError as e:
    print "Converting audio failed."
    return 0.
pygame.mixer.music.load(outfilename)
pygame.mixer.music.play()
现在,一个问题出现了。第一个文件被正确转换和播放。但是当跳转到下一个文件时,tmp.wav不能被覆盖。我认为这是因为文件仍然在音乐模块中打开,但这并没有说明如何关闭文件。在转换新文件之前,我已经尝试过pygame.mixer.music.stop、pygame.mixer.quit和pygame.mixer.stop,但它们都不起作用


如何解决此问题?

添加用于转换和播放的代码您不关闭文件。我知道。但是pygame.mixer.music似乎没有关闭文件的功能,我的意思是为每个文件打开并关闭它。这并不能解决问题。