需要安装:pip install opencv-python pygame pillow numpy
技术参数
| 特性 | 说明 |
| 分辨率支持 | 最高4K HDR |
| 采样率 | 44.1kHz-192kHz |
| 位深 | 16bit/24bit/32bit |
| 声道配置 | 立体声/5.1/7.1环绕 |
| 字幕支持 | SRT/ASS外挂字幕 |
| 色彩空间 | RGB/YUV 4:4:4/4:2:2/4:2:0 |
核心功能
1. 多格式支持
- 音频:MP3/WAV/FLAC
- 视频:MP4/AVI/MKV/MOV
- 支持本地文件和网络URL
- 播放控制
- ▶️ 播放/⏸暂停切换
- ⏮上一曲 ⏭下一曲
- 空格键快捷控制
- 进度条拖拽定位
- 界面特性
- 动态渐变背景(紫罗兰 → 品红)
- 音频可视化波形
- 高清视频渲染
- 半透明控件设计
4. 音效管理
- 实时音量调节(0-100%)
- 静音切换
-
import tkinter as tk from tkinter import ttk, filedialog, simpledialog from PIL import Image, ImageTk import cv2 import pygame import os import numpy as np import threading import time # 在文件开头添加环境变量设置 os.environ["SDL_AUDIODRIVER"] = "directsound" # 强制使用DirectSound驱动 class GradientFrame(tk.Canvas): """自定义渐变画布组件""" def __init__(self, parent, colors=("#1a1a2e", "#16213e", "#0f3460"), steps=100, **kwargs): super().__init__(parent, **kwargs) self.colors = colors self.steps = steps self.bind("<Configure>", self.draw_gradient) def draw_gradient(self, event=None): self.delete("gradient") width = self.winfo_width() height = self.winfo_height() # 创建渐变图像 gradient = np.zeros((height, width, 3), dtype=np.uint8) for i in range(width): color_index = int(i / width * (len(self.colors)-1)) color1 = self.hex_to_rgb(self.colors[color_index]) color2 = self.hex_to_rgb(self.colors[color_index+1]) ratio = (i % (width//(len(self.colors)-1))) / (width//(len(self.colors)-1)) color = [int(c1 + (c2-c1)*ratio) for c1, c2 in zip(color1, color2)] gradient[:, i] = color self.image = ImageTk.PhotoImage(image=Image.fromarray(gradient)) self.create_image(0, 0, image=self.image, anchor="nw", tags="gradient") @staticmethod def hex_to_rgb(hex_color): return tuple(int(hex_color[i:i+2], 16) for i in (1, 3, 5)) class ModernMediaPlayer: def __init__(self, root): self.root = root self.root.title("幻影播放器") self.root.geometry("1280x720") # 初始化所有媒体相关属性 self.playlist = [] self.current_index = 0 self.is_playing = False self.volume = 0.7 self.video_capture = None # 显式初始化视频捕获对象 self.media_type = None # 添加媒体类型标识 # 创建UI组件 self.setup_ui() self.setup_media() def setup_ui(self): # 渐变背景 self.gradient_frame =
