【Python实现全屏播放视频】

效果如下:

虽然视频比较抽象,但是确实是用python(cv2)实现的

请添加图片描述

代码:

import cv2
from playsound import playsound
from threading import Thread


def func1():
    cap = cv2.VideoCapture("mp4/out.mp4") #替换为视频路径
    ret, frame = cap.read()
    while (1):
        cv2.namedWindow('frame', cv2.WINDOW_NORMAL)
        cv2.setWindowProperty('frame', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
        ret, frame = cap.read()
        cv2.imshow('frame', frame)
        if cv2.waitKey(33) & 0xFF == ord('q') or ret == False:
            cap.release()
            cv2.destroyAllWindows()
            break
        cv2.imshow('frame', frame)


def func2():
    playsound('mp4/startmusic.MP3') #替换为音频路径


if __name__ == '__main__':
    Thread(target=func1).start()
    Thread(target=func2).start()

这段 Python 代码的功能和原理如下:

功能:

  • 同时播放一个视频和一段音频。
  • 视频在全屏窗口中显示,并且可以通过按下 q 键或视频读取结束来关闭视频窗口。

原理:

  • 导入了必要的库:cv2 用于视频处理,playsound 用于播放音频,threading 用于多线程操作。
  • 定义了两个函数 func1func2
    • func1 函数:
      • 使用 cv2.VideoCapture 打开指定的视频文件。
      • 通过一个循环不断读取视频帧,并使用 cv2.imshow 在命名为 frame 的窗口中显示。
      • 设置窗口为全屏显示。
      • 当按下 q 键或者视频读取结束(ret == False)时,释放视频资源并关闭窗口。
    • func2 函数:使用 playsound 播放指定的音频文件。
  • if __name__ == '__main__': 条件下,创建两个线程分别执行 func1func2 函数,实现视频播放和音频播放的同时进行。

这样通过多线程,可以在播放音频的同时独立地处理视频的显示和控制,提高程序的并发性能,使得音频和视频的播放能够相对独立和流畅地进行。

全屏播放的核心:

cv2.namedWindow('frame',cv2.WINDOW_NORMAL)
cv2.setWindowProperty('frame',cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)

cv2.namedWindow('frame', cv2.WINDOW_NORMAL) 这行代码创建了一个名为 frame 的窗口,并将其设置为可调整大小的模式(cv2.WINDOW_NORMAL)。

cv2.setWindowProperty('frame', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN) 这行代码则是将名为 frame 的窗口的属性设置为全屏显示(cv2.WINDOW_FULLSCREEN)。

通过这两步操作,首先创建了一个可调整的窗口,然后将其属性明确设置为全屏,从而实现了全屏播放的效果。

例如,如果只创建了普通的窗口而不进行属性设置,那么窗口可能会以默认的大小和样式显示,而不是全屏。再比如,如果直接尝试将一个不可调整大小的窗口设置为全屏,可能会导致设置无效或出现异常。

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值