【MPV播放器组件 v2.1 稳定版】(基于 libmpv 0.41.0)
本帖最后由 孤独靖仇 于 2026-5-30 13:21 编辑MPV播放器组件 v2.1 稳定版(基于 libmpv 0.41.0)
论坛版本约每2-3个月更新一次,主打稳定优先。本次整合了 v2.0 以来所有改进与修复,推荐升级。
核心亮点
彻底解决多线程/销毁顺序导致的崩溃隐患,杜绝野指针访问
新增通用属性读取、任意 MPV 命令执行,扩展性大幅增强
摄像头支持分辨率枚举及参数便捷设置
错误事件全覆盖,所有操作失败均触发回调
所有设备列表、编解码器信息统一采用 JSON 格式,解析更规范
新增功能速览
// 读取任意属性
变量 音轨数 = 播放器.取属性整数("track-list/count")
// 万能命令(JSON数组或对象)
播放器.执行MPV命令("[\"set\",\"volume\",\"50\"]")
播放器.执行MPV命令文本("set volume 50")
// 摄像头分辨率枚举
变量 支持列表 = 播放器.取摄像头支持的分辨率("摄像头名")
播放器.置摄像头参数2(1280, 720, 30)
播放器.加载摄像头("摄像头名")
修复与优化
初始化阶段不再误发播放状态事件
修复 loop-file 等 inf 属性设置失败问题
音量可设为 0,不再拒绝静音请求
Win11 摄像头兼容性改进命令
队列防抖机制更稳健,避免属性设置丢失
升级须知
初始化返回值改为 JSON,需用 JSON.取文本("status") 判断成功
加载文件() 不再携带自动播放参数,请单独设置 播放器.自动播放 = 真
取音频设备列表、取硬件解码编码器 等方法现已返回 JSON,旧版 | 分隔格式无效
高频细修版本可加群26660804获取。感谢所有反馈,播放愉快!
本组件是火山视窗版本!不是安卓的!
**** Hidden Message *****
隐藏亮点被发现了
其实播放列表早已内置智能预读,连续播放无缝切换。大部分用户现在都用 播放列表添加 + 播放列表下一项 来播剧,流畅省心,完全替代了单文件加载方式。这功能原本没写在文档里,没想到被火伴们自己挖出来了!其实还有其他亮点!就看小伙伴们能不能发现了!
在这里我可以明确说播放列表预读功能和 MPV 内存管理机制都请放心,经过全面检查,没有隐患:
1. 播放列表预读
初始化时已设定 playlist-prefetch=yes,MPV 会自动在后台解析下一项,实现无缝切换。
预读缓存大小由 demuxer-max-bytes(向前)和 demuxer-max-back-bytes(向后)控制,默认值已考虑主流使用场景,不会造成内存溢出。
播放列表清空、移除单曲时,对应的预读缓存会被 MPV 内部自动清理,无需手动干预。
所有播放列表操作(添加、下一项、清除等)均通过命令队列或直接 mpv 命令执行,MPV API 线程安全,不会因并发导致崩溃。
2. MPV 内存自动回收
调用 mpv_terminate_destroy(mpv_) 时会完整释放 MPV 内部所有资源:播放列表、缓存、解码器、渲染上下文等。
我们已确保在销毁 mpv 句柄前,所有工作线程(事件、命令队列、防抖器)均已退出,杜绝了野指针访问。
所有由 mpv 返回的字符串和节点均使用 mpv_free / mpv_free_node_contents 显式释放,没有内存泄漏风险。
所以无论是播放列表预读还是整体内存管理,目前都已稳定可靠,可以放心投入使用。
1111111111 6666666666 6666666666666 1111111111 感谢感谢感谢感谢!!! 感谢一下 66666666 感谢大佬:噜阿噜 支持支持