[英]Python: Playing wav in memory using winsound - SND_MEMORY
我正在嘗試從內存而不是文件中播放wav文件。 這是我嘗試過但它不起作用。
>>> with open('my/file/dir/sound.wav','rb') as f:
>>> data = f.read()
>>> data = base64.b64encode(data)
>>> data = data.decode('UTF-8')
所以現在data是一個字符串對象,表示音頻wav文件的字節。
>>> winsound.PlaySound(data,winsound.SND_MEMORY)
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
RuntimeError: Failed to play sound
請幫忙。 我哪里錯了?
編輯:沒關系。 這是一個錯誤。
首先,為什么要編碼這樣的數據? 這就是我所做的:
import winsound
memoryfile=open("myfilepath","rb")
winsound.PlaySound(memoryfile.read(), winsound.SND_MEMORY)
我發現,如果你在告訴winsound播放它之前閱讀文件,它仍會播放,但之后會崩潰,所以不要這樣做:
memoryfile=open("myfilepath","rb").read()
也嘗試使用\\\\
而不是/
目錄
據我了解,問題在於以下幾行:
>>> data = data.decode('UTF-8')
使用base64.b64encode()
進行編碼時,應使用base64.b64decode()
解碼。
所以,代碼可能是:
with open('my/file/dir/sound.wav','rb') as f:
data = base64.b64encode(f.read())
winsound.PlaySound(base64.b64decode(data), winsound.SND_MEMORY)
我相信它解決了這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.