You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中使用OpenCV与playsound库实现音画同步的问题

问题描述

用户代码如下:

from playsound import playsound
import cv2
image = cv2.imread("img.png")
cv2.imshow("image2", image), playsound("Stan.mp3")
cv2.waitKey(0)
cv2.destroyAllWindows()

运行时音频播放正常,但图像窗口卡顿、无响应,需求是实现图像显示与音频播放同步运行。

问题原因

playsound是阻塞式函数——它会占用主线程直到音频播放完全结束。而OpenCV的窗口(cv2.imshow创建的)需要主线程实时处理刷新、用户交互等事件,主线程被playsound占着的时候,窗口没法得到资源更新,自然就卡顿无响应了。

解决方案

用多线程把音频播放放到子线程执行,让主线程专注处理OpenCV的窗口事件,代码修改如下:

from playsound import playsound
import cv2
import threading

# 定义音频播放函数
def play_audio():
    playsound("Stan.mp3")

image = cv2.imread("img.png")
cv2.imshow("image2", image)

# 启动子线程播放音频
audio_thread = threading.Thread(target=play_audio)
audio_thread.start()

# 主线程处理窗口事件,直到按下任意键或音频播放结束
while cv2.waitKey(1) == -1 and audio_thread.is_alive():
    pass

cv2.destroyAllWindows()
  • 引入threading模块创建子线程,将音频播放任务从主线程分离
  • 主线程通过循环检测窗口按键事件和音频线程状态,既保证窗口正常响应,也能在音频结束或用户按键后关闭窗口

内容的提问来源于stack exchange,提问作者Microsoft surface go

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 15:33:11