【发布时间】:2020-04-08 03:20:59
【问题描述】:
我正在尝试使用 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'
提前感谢您的帮助!
【问题讨论】:
-
您有未定义的行为。 stackoverflow.com/questions/58610333/….