资讯动态

基于Qt 6.12.0 + FFmpeg 9.0.2的4k视频播放器

发布时间:2026/10/27 18:55:36 来源:尧图企业网站定制
最近写了个基于Qt 6.12.0 FFmpeg 9.0.2的4k视频播放器功能已经做的比较完善了。如果你厌倦了各种视频播放器的广告那就做一个属于自己的播放器吧源码下载链接基于qt6.12ffmpeg的4k视频播放器沉浸式极简无边框界面自适应硬解软解源码有详细注释适合小白可以作为课程设计或者毕业设计的参考资源-CSDN下载开发环境 win11qt6.12 qtcreator20.0.2源码有详细注释适合小白 压缩包里面有详细的软件功能说明书和软件设计方案。还有已经编译好的ffmpeg库直接用就行一、文档说明1.1 编写目的本说明书面向 QMoviePlayer 的使用者与验收者逐项说明软件界面上每一个可见元素、每一项操作的含义与效果。文中所有截图均来自同一份片源《Zootopia.2.2025.1080p.AMZN.WEB-DL.English.DDP5.1.H.265.简中英文.mkv》以便对照同一画面下的不同状态。1.2 阅读约定文中窗口宽度均指逻辑像素与系统缩放无关。本机为 125% 缩放截图是 1600×900 物理像素对应 1280×720 逻辑像素。「控制栏」指窗口底部那条半透明的悬浮工具栏「进度条」指控制栏中间的蓝色横条。「气泡」指悬浮在画面上方的深色圆角提示块分为缩略图气泡与提示气泡OSD两种。说明书中的全部截图由脚本tools/shoot_manual.py自动抓取窗口尺寸、跳转位置、鼠标动作、等待时间全部固定可重复复现。二、软件概述2.1 产品定位QMoviePlayer 是一款对标 QQ 影音操作习惯的 Windows 本地视频播放器。界面极简没有菜单栏、没有系统边框所有操作集中在一条会自动隐藏的悬浮控制栏上画面本身占据整个窗口。2.2 技术构成层次实现方式解封装FFmpeg 9.0.2libavformat支持 mp4 / mkv / mov / avi / flv / wmv / rmvb / ts 等容器解码视频D3D11VA → DXVA2 → 软件解码自动回退音频FFmpeglibavcodec渲染QOpenGLWidget GLSL 3.3双纹理做 YUV→RGB支持 8bit / 10bit音频输出QAudioSink推流Float32 / 48kHz / 立体声音频主时钟驱动同步字幕自研解析器支持外挂 SRT / ASS / SSA界面Qt Widgets无边框窗口手工实现拖动、缩放、最大化、全屏2.3 主要能力一览播放 / 暂停、进度拖动、±5 秒 / ±30 秒跳转、0%~90% 一键定位进度条悬停显示该位置的真实画面缩略图音量滑块、滚轮调节、一键静音0.5x ~ 4.0x 倍速保持音调不变外挂字幕同名自动加载、字号缩放、0.5 秒步进延时校正、一键关闭原始分辨率截图、播放列表、循环模式、音轨切换、画面比例与旋转、窗口置顶窗口最小可缩至 100×50宽度小于 650 时自动隐藏控制栏三、启动与打开文件3.1 启动界面程序启动后若没有指定文件显示空状态页画面区为纯黑中央一枚蓝色「打开文件」按钮下方一行灰色提示或将视频文件拖入窗口。右上角的三个窗口按钮最小化 / 最大化 / 关闭在空状态下同样可见不必先打开文件才能关窗口。图 1 启动界面空状态3.2 打开文件三种方式都可以打开视频点击空状态页的「打开文件」按钮按CtrlO或右键菜单选择「打开文件…」直接把视频文件拖进窗口。文件对话框的过滤器为「视频文件」只列出常见视频后缀避免误选其它文件。图 2 打开文件对话框仅列出视频文件3.3 命令行与关联打开也支持把文件路径作为第一个参数传入便于做文件关联或从其它程序调起QMoviePlayer.exe D:\movies\sample.mkv路径含中文时同样可用程序内部按本地 8 位编码解析参数不依赖控制台代码页。四、主界面构成4.1 整体布局打开视频后窗口只由三部分构成画面区占满整个窗口按适应窗口方式保持原始比例多余部分留黑边控制栏悬浮在窗口底部、居中显示的一条圆角深色栏包含播放、进度、时间、音量、倍速、字幕、截图、循环、播放列表、全屏等全部控件窗口按钮右上角的最小化 / 最大化 / 关闭鼠标移入时会有浅色底。图 3 播放主界面画面 底部悬浮控制栏 右上角窗口按钮控制栏内部从左到右依次为播放/暂停、上一集、下一集、进度条、时间当前/总长、静音按钮、音量滑块、倍速、字幕、截图、循环模式、播放列表、全屏。4.2 控制栏的自动隐藏控制栏是按需出现的鼠标在画面区域移动时出现鼠标停住不动 5 秒后淡出隐藏让画面完全干净。鼠标停在控制栏内部时不会隐藏 —— 否则会出现鼠标还没点到按钮工具栏就消失了。图 4 鼠标静止 5 秒后控制栏淡出画面无遮挡控制栏隐藏后右上角的三个窗口按钮依然可见。窗口按钮属于窗口的一部分不随控制栏一起淡出否则用户想关窗口还得先晃一下鼠标。五、播放控制5.1 播放与暂停三种方式等价单击画面任意位置、按Space、点击控制栏最左侧的播放按钮。按钮图标会随状态切换播放中显示暂停两条竖线暂停时显示播放三角不会出现画面在动但按钮显示播放的不一致。5.2 进度条与缩略图预览把鼠标移到进度条上会在鼠标上方弹出缩略图气泡气泡里是该位置的真实画面下方一行加粗时间表示松手后会跳到这里。气泡水平跟随鼠标靠近窗口边缘时自动夹在窗口内。图 5 鼠标悬停在进度条 50% 处气泡显示 53:56 的真实画面气泡由占位图 → 真图两段式显示气泡立即出现并显示灰色的预览占位块后台线程解出画面后自动替换。因此手感是气泡秒出、图稍后浮现不会出现点击后毫无反馈。图 6 缩略图气泡特写真实画面 时间标签5.3 拖动跳转按住进度条拖动时气泡跟随鼠标实时更新目标时间但画面不会跟着跳动松开鼠标才真正跳转。这样避免拖动过程中反复解码造成的卡顿与闪烁。图 7 拖动中气泡显示 1:06:45右下角时间仍是原来的 32:24松手后才跳转除了拖动还可以用键盘快速定位←/→前后 5 秒Ctrl←/Ctrl→前后 30 秒数字键0~9直接跳到 0%~90%。5.4 上一集 / 下一集控制栏的上一集 / 下一集按钮或PageUp/PageDown在播放列表中切换文件列表为空时按钮无效果。六、音量控制三种调节方式效果一致拖动控制栏上的音量滑块0~100%在画面上滚动鼠标滚轮每次 5%按↑/↓每次 5%。调节时窗口底部中央会弹出提示气泡显示当前音量百分比音量为 0 时显示静音。点击喇叭图标或按M可一键静音图标会变成带斜线的喇叭。把音量从 0 调大时会自动解除静音不需要先按一次M。图 8 滚轮调节音量底部弹出提示气泡图 9 提示气泡特写音量 64%七、播放速度倍速共 8 档0.5x、0.75x、1.0x、1.25x、1.5x、2.0x、3.0x、4.0x。调节方式按[降一档、]升一档或右键菜单 →「倍速」直接选档。图 10 按 ] 升档底部提示当前倍速图 11 提示气泡特写倍速 1.25x变速采用 FFmpeg 的atempo滤镜处理音频人声不会变尖或变闷保持音调只改变语速。倍速会随配置保存下次启动沿用。八、字幕8.1 加载方式字幕只支持外挂文件SRT / ASS / SSA不支持读取视频内嵌字幕轨。两种加载方式自动加载字幕文件与视频同名、放在同一目录即可。程序会依次尝试影片名.srt、.ass、.ssa再尝试影片名.zh.srt、.chs、.chi、.zh-CN、.zh-Hans、.sc等中文变体手动加载右键菜单 →「字幕」→「加载字幕文件…」选择任意 srt/ass 文件。图 12 同名 SRT 字幕自动加载字幕居中显示在画面上8.2 字幕调节右键菜单 →「字幕」子菜单提供四项菜单项作用字号 / 字号 -每档 0.1 倍范围 0.5~2.0 倍随配置保存延时 0.5s / 延时 -0.5s字幕整体提前或延后 0.5 秒用于校正不同版本的时间轴偏差关闭字幕临时隐藏字幕数据仍留在内存重新打开立即显示加载字幕文件…手动指定字幕文件控制栏上的字幕按钮可一键开关字幕有字幕且开启时图标为蓝色无字幕或已关闭时为白色。ASS 字幕按文件内的样式渲染字体、颜色、描边、位置但不支持\k卡拉OK、\move移动、\fad淡入淡出等特效标签。九、截图按CtrlS、点击控制栏的相机图标、或右键菜单 →「截图」即可把当前画面按原始分辨率保存为 PNG与窗口大小无关1080p 片源存出来就是 1920×1080。保存位置固定为系统图片目录下的QMoviePlayer子目录文件名为「影片名_年月日_时分秒.png」例如Zootopia.2.2025.1080p.AMZN.WEB-DL..._20261024_221701.png。保存成功后底部会弹出提示显示完整的保存路径。图 13 截图成功后的提示气泡显示完整保存路径文件名用年月日_时分秒而不是冒号分隔的时间一是 Windows 文件名不允许冒号二是按文件名排序就等价于按时间排序。十、播放列表按CtrlL、点击控制栏最右侧的列表图标、或右键菜单 →「显示播放列表」右侧会滑出宽 300 的播放列表面板再次执行同样的操作即可收起。面板标题显示当前条目数每个条目按「序号. 文件名」显示鼠标悬停可看到完整路径双击条目立即播放该文件。面板底部有「清空列表」面板头部有「添加文件」与「隐藏播放列表」。图 14 播放列表面板从右侧滑出控制栏自动让出右侧空间面板展开时控制栏会向左偏移并缩短避免被面板遮挡 —— 这就是为什么同一窗口宽度下面板展开前后的控制栏位置不一样。播放列表会随配置保存下次启动自动恢复关闭程序前播到哪个文件、播到哪里下次打开同一文件时也会自动续播。十一、右键菜单在画面区域单击右键弹出上下文菜单几乎所有不常用但必须有的功能都收在这里避免主界面堆满按钮。图 15 右键菜单常用操作 五个子菜单菜单项说明打开文件…等同于CtrlO播放 / 暂停文字随当前状态变化显示播放列表滑出右侧面板字幕 ▸加载、字号、延时、关闭音轨 ▸切换视频内的多条音频轨文件只有一条时显示无音轨并置灰倍速 ▸8 档倍速当前档带勾选画面 ▸比例适应窗口 / 拉伸铺满 / 原始尺寸旋转不旋转 / 90° / 180° / 270°截图保存当前画面循环模式 ▸不循环 / 单曲循环 / 列表循环窗口置顶勾选后窗口始终浮在其它窗口之上最大化 / 还原文字随状态变化全屏 / 退出全屏文字随状态变化关于版本与致谢信息切换音轨、倍速、循环模式、画面比例后底部都会弹出提示气泡例如「单曲循环」「拉伸铺满」让用户确认操作已生效。十二、窗口与显示12.1 无边框窗口的拖动与缩放窗口没有系统标题栏与边框因此拖动和缩放由程序自己实现拖动按住窗口顶部 10 像素的窄条拖动。画面区域不再拖窗口避免想选中画面却把窗口拖走了缩放按住左 / 右 / 下边框的 8 像素区域或左下 / 右下角拖动光标会自动变成对应的双向箭头双击双击画面切换全屏双击顶部标题区切换最大化。12.2 最大化与还原点击右上角中间的方块按钮或双击标题区最大化再次点击还原。最大化采用自实现几何切换并刻意比屏幕少 1 像素以避开 Windows 的全屏优化因此切换过程不黑屏、不闪烁也不会触发系统把窗口当成全屏独占。图 16 最大化后画面铺满屏幕控制栏仍在底部悬浮12.3 全屏三种方式进入全屏双击画面、按F11/F/Enter、点击控制栏最右侧的全屏按钮。全屏时隐藏窗口按钮与标题区只保留画面与鼠标活动时的控制栏按Esc退出全屏。图 17 全屏播放画面按比例居中上下留黑边12.4 响应式窄窗口与最小尺寸窗口最小可缩到100×50相当于一个迷你播放器。窗口变窄时界面会分级适配窗口宽度表现≥ 650正常显示控制栏控制栏宽度自适应520~1100居中 650整个底部控制栏不显示避免控件被挤压重叠拉宽回 650 以上、鼠标一动即恢复任意宽度右上角三个按钮按可用宽度三等分缩小36px → 最小 16px始终可点空状态「打开文件」按钮按窗口等比缩小窗口过小时隐藏下方提示文字图 18 窗口宽度 600 时控制栏不显示仅保留画面与窗口按钮图 19 最小尺寸 100×50图为放大 5 倍三个窗口按钮仍可点击窄窗口下虽然看不到控制栏快捷键依然有效Space播放暂停、←/→跳转、↑/↓调音量、F全屏等。12.5 启动尺寸程序会记住上次关闭时的窗口位置与大小含是否最大化下次启动原样恢复首次启动时居中显示宽高为桌面的一半。十三、快捷键一览按键功能Space播放 / 暂停F/F11/Enter/ 双击画面进入 / 退出全屏Esc退出全屏←/→后退 / 前进 5 秒Ctrl←/Ctrl→后退 / 前进 30 秒↑/↓音量 5% / −5%M静音开关[/]倍速降一档 / 升一档0~9跳转到 0%~90%PageUp/PageDown上一集 / 下一集CtrlO打开文件CtrlS截图CtrlL显示 / 隐藏播放列表鼠标操作单击画面播放/暂停双击画面全屏滚轮调音量右键出菜单悬停进度条看缩略图。十四、配置持久化下列状态保存在系统用户配置中Windows 注册表HKCU\Software\QMoviePlayer关闭程序后不会丢失项目说明窗口位置与大小含是否最大化下次启动原样恢复音量 / 静音状态下次启动沿用播放倍速下次启动沿用字幕字号 / 延时对所有字幕文件生效画面比例 / 旋转下次启动沿用播放列表含当前播放到第几项续播位置按文件路径分别记录重新打开同一文件时从上次位置继续运行日志写入%APPDATA%\QMoviePlayer\QMoviePlayer\logs\app.log按 5MB × 3 个文件滚动便于排查播放异常。十五、性能说明与已知限制15.1 缩略图预览的耗时进度条缩略图由独立线程 独立解码上下文生成不占用播放线程因此预览再慢也不会让播放卡顿。实测1080p 素材本例通常在 150 毫秒内出图悬停时几乎无等待感2K / 10bit / 60fps 重素材单张约 0.3~0.8 秒气泡先显示占位图图好后自动替换。15.2 已知限制硬解帧需要从 GPU 回读到内存非零拷贝4K/60fps HEVC 在低端集显上可能掉帧不支持读取视频内嵌字幕轨只支持外挂字幕文件ASS 字幕只渲染基本文本与样式不支持\k、\move、\fad等特效不做 HDR → SDR 色调映射HDR 片源会按原始数值显示仅支持本地文件不含 HLS / DASH 等流媒体协议。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑