我正在尝试使用 winmm.dll (ctypes.windll.winmm) 在 python 中播放 .mp3 文件。但是当我尝试以毫秒为单位获取某个文件的长度时,而不是实际长度(05:23 = 大约 323000 毫秒)我只得到 3。状态命令得到的时间格式是“m”,之后它不会改变设置命令。这是一些说明问题的代码:
from ctypes import windll, c_buffer
fp = 'song.mp3'
alias = 'test'
buf = c_buffer(255)
r = windll.winmm.mciSendStringW(f'open "{fp}" alias {alias}', buf, 254, 0)
print(r)
buf = c_buffer(255)
r = windll.winmm.mciSendStringW(f'status {alias} time format', buf, 254, 0)
print(r, buf.value)
buf = c_buffer(255)
r = windll.winmm.mciSendStringW(f'set {alias} time format milliseconds', buf, 254, 0)
print(r)
buf = c_buffer(255)
r = windll.winmm.mciSendStringW(f'status {alias} time format', buf, 254, 0)
print(r, buf.value)
buf = c_buffer(255)
r = windll.winmm.mciSendStringW(f'status {alias} length', buf, 254, 0)
print(r, buf.value)
及其输出:
0
0 b'm'
0
0 b'm'
0 b'3'
在此先感谢您的帮助!