我正在进行一项声音实验,我遇到过一个问题.我将一组波形数据保存到.wav文件并播放它,但有没有办法跳过这一步,只是从内存中播放声音?我正在寻找一种跨平台工作的解决方案.
我想你正在使用wave库,对吧?
\n文档说:
\n\n\nwave.open(文件[,模式])
\n如果文件是字符串,则按该名称打开文件,否则将其视为可查找的类文件对象。
\n
这意味着您应该能够执行以下操作:
\n>>> import wave\n>>> from StringIO import StringIO\n>>> file_on_disk = open(\'myfile.wav\', \'rb\')\n>>> file_in_memory = StringIO(file_on_disk.read())\n>>> file_on_disk.seek(0)\n>>> file_in_memory.seek(0)\n>>> file_on_disk.read() == file_in_memory.read()\nTrue\n>>> wave.open(file_in_memory, \'rb\')\n<wave.Wave_read instance at 0x1d6ab00>\nRun Code Online (Sandbox Code Playgroud)\n编辑(参见评论):以防万一你的问题不仅是从内存中读取文件,而且是从 python 中播放它......
\n一个选择是使用pymedia
\nimport time, wave, pymedia.audio.sound as sound\nf= wave.open( \'YOUR FILE NAME\', \'rb\' ) # \xe2\x86\x90 you can use StrinIO here!\nsampleRate= f.getframerate()\nchannels= f.getnchannels()\nformat= sound.AFMT_S16_LE\nsnd= sound.Output( sampleRate, channels, format )\ns= f.readframes( 300000 )\nsnd.play( s )\nwhile snd.isPlaying(): time.sleep( 0.05 )\nRun Code Online (Sandbox Code Playgroud)\n[来源:pymedia 教程(为了简洁起见,我省略了他们的解释性评论]
\n| 归档时间: |
|
| 查看次数: |
4144 次 |
| 最近记录: |