处理下一个键盘输入时出现问题 - 用于视频幻灯片播放器的 python 脚本

问题描述 投票:0回答:0

这个问题特定于 iMac、python 和 VLC。

我编写了一个简短的 python 脚本来使用 VLC 播放一些随机视频文件,就像幻灯片放映但用于视频。当我按键盘上的“n”时,我希望脚本开始播放下一个文件。按“q”退出程序。

第一次按“n”或“q”时,效果非常好。 然而,随后按“n”没有任何效果。

有人知道我做错了什么吗?这是我的代码:

#!/usr/bin/env python3

import os
import random
import subprocess
from pynput import keyboard
from threading import Thread

video_directory = '/Volumes/T7/test'
video_files = [f for f in os.listdir(video_directory) if f.endswith(('.mp4', '.avi', '.mkv', '.mov', '.flv', '.wmv'))]
vlc_path = '/Applications/VLC.app/Contents/MacOS/VLC'
video_count = 20
random_videos = random.sample(video_files, video_count)
video_paths = [os.path.join(video_directory, video) for video in random_videos]

vlc_process = subprocess.Popen([vlc_path, '--video-on-top', '--fullscreen', video_paths[0]])
current_video = 0

def on_press(key):
    global vlc_process
    global current_video
    if key == keyboard.KeyCode.from_char('n'):
        vlc_process.terminate()
        current_video += 1
        if current_video < video_count:
            vlc_process = subprocess.Popen([vlc_path, '--video-on-top', '--fullscreen', video_paths[current_video]])
    elif key == keyboard.KeyCode.from_char('q'):
        vlc_process.terminate()
        return False

keyboard_listener = keyboard.Listener(on_press=on_press)
keyboard_thread = Thread(target=keyboard_listener.start)
keyboard_thread.start()

vlc_process.wait()
keyboard_listener.stop()
python macos vlc
© www.soinside.com 2019 - 2024. All rights reserved.