簡體   English   中英

Python:使用winsound - SND_MEMORY在內存中播放wav

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM