本帖最后由 孤独靖仇 于 2026-4-4 10:14 编辑
MPV播放器组件重大更新!新版 v2.0 来了(libmpv 0.41.0) 各位火伴好!MPV播放器组件迎来了一次大版本升级重构,底层库从 libmpv 0.40.0 升级到 0.41.0,同时组件本身也增加了许多实用功能,修复了旧版的一些问题。本文会详细列出新旧差异,让初学者也能轻松上手。 1,更新概要 项目 旧版 (v1.x) 新版 (v2.0) libmpv 版本 0.40.0 0.41.0 火山类名 MPV播放器 MPV播放器(类名不变,但内部完全重构) 返回值格式 文本(如 "成功|xxx") JSON(便于解析) 事件数量 9 个 11 个(新增播放列表数量变化、播放列表位置变化等) 新增方法 -- 50+ 个(字幕样式、AB循环点单独控制、摄像头参数、性能统计等)
建议:新项目直接使用新版,老项目建议升级,本文后面会给出迁移指南。
2,主要亮点(初学者必看) 2.1 初始化更稳定,返回值变 JSON 旧版初始化成功返回 "成功|MPV初始化成功",新版返回标准 JSON: {"status":"success","message":"MPV initialized","instance_id":1} 你可以用 JSON 解析器轻松获取状态和实例 ID,不再需要字符串切割。
2.2 加载文件支持自动播放开关,更灵活 旧版:加载文件(文件路径, 是否自动播放) 新版:拆分为 加载文件() + 自动播放 属性,逻辑更清晰。
新版用法: 播放器.自动播放 = 真 // 设置自动播放模式 播放器.加载文件("D:/video.mp4")
2.3 新增大量字幕样式控制 以前只能设置字幕字体、大小、颜色,现在你可以: 设置边框大小、阴影颜色/偏移 水平对齐(左/中/右)、垂直对齐(上/中/下) 单独调整字幕缩放、位置、编码页
2.4 播放列表大增强 可以随机打乱顺序 可以移除指定项 可以获取播放列表项文件名 新增事件:当播放列表数量或当前位置改变时通知你
2.5 硬件解码信息更透明 新版可以直接获取当前使用的硬件解码器、支持的编码器列表(h264/hevc等),方便调试。
2.6 摄像头捕获更专业 支持设置摄像头参数(分辨率、帧率、像素格式),并且可以获取摄像头列表(JSON格式)。
2.7 性能监控更全面 新增了多个性能属性: 取估计滤镜帧率 – 视频滤镜处理性能 取VO延迟帧数 – GPU渲染负载 取解码器丢帧数 – 解码器内部丢帧统计
2.8 支持任意 MPV 命令 如果你熟悉 mpv 的命令行参数,可以直接通过 执行MPV命令() 发送任意 JSON 格式的命令,实现“万能接口”。
3,详细更新对照表(老用户迁移用) 3.1 初始化 旧版:初始化(窗口句柄, 解码模式) 返回文本 新版:初始化(窗口句柄, 解码模式) 返回 JSON(如 {"status":"success","instance_id":1}) 新增:取实例ID() 返回长整数,用于多实例区分
3.2 播放控制 旧版:加载文件(路径, 自动播放) 新版:加载文件(路径) + 自动播放 属性 新增:可视 属性(读写),可动态显示/隐藏视频窗口 新增:停止() 方法,完全停止播放,进度归零
3.3 字幕功能 旧版:仅支持基本样式 新版:支持边框、阴影、对齐、缩放、位置、编码页(新增10+个方法) 新增:移除字幕() 清除外部字幕 新增:字幕可见性 属性,可单独开关字幕显示
3.4 播放列表 旧版:播放列表下一项 基于命令 新版:播放列表下一项 内部计算索引,循环逻辑更可靠 新增:取播放列表项名称(索引) 获取文件路径 新增:播放列表移除(索引) 删除指定项 新增:播放列表随机() 随机排序
3.5 音视频设备 旧版:取音频设备列表 返回 "dev1|dev2" 新版:返回 JSON 数组 ["dev1","dev2"],更易解析 新增:置音频设备ByName(友好名称) 通过描述名称设置设备 新增:置音频采样率(48000) 强制音频采样率
3.6 硬件解码 旧版:取当前硬件解码 返回字符串 新版:取详细GPU信息() 返回详细信息(解码器、渲染后端、GPU API) 旧版:取硬件解码编码器 返回 "h264|hevc" 新版:返回 JSON {"current":"d3d11va","codecs":["h264","hevc"]},同时返回当前使用的解码器
3.7 新增实用方法(部分列表) 置反交错、置视频旋转、置去色带、置插值 置循环点A / 置循环点B、取循环点A / 取循环点B 取丢帧计数、取缓存时长、取已用缓存、取缓存速度 置网络超时、置用户代理、置引用页 前进一帧、后退一帧 取章节数量、取当前章节、跳转章节 取元数据 置视频缩放模式(0=原始,1=适应,2=填充,3=拉伸,4=自定义) 取显示器信息 取摄像头列表 / 加载摄像头 / 置摄像头参数
3.8 事件变化 旧版事件 新版事件 变化 属性被改变 已移除 改用具体事件,减少无效触发 文件加载完成 文件加载完成 参数相同,更可靠 播放状态改变 播放状态改变 1=播放,2=暂停 播放时间改变 播放时间改变 自带节流 播放结束 播放结束 同上 错误发生 错误发生 新增错误代码参数 轨道切换 轨道切换 同上 缓存状态改变 缓存状态改变 同上 视频尺寸改变 已合并 新版通过属性变化获取 章节改变 章节改变 新增章节标题参数 -- 播放列表位 置改变 新增事件 -- 播放列表数量改变 新增事件
4,升级注意事项(不兼容变更) 如果你之前使用了旧版组件,升级到新版需要修改以下地方: (1) 初始化返回值解析 旧版判断 结果 == "成功|xxx" → 新版判断 json["status"] == "success"
(2) 加载文件 旧版 加载文件(路径, 真) → 新版先设置 自动播放 = 真,再 加载文件(路径)
(3) 取音频设备列表 / 取摄像头列表 旧版返回 "dev1|dev2" → 新版返回 JSON 数组,需要用 JSON 解析
(4) 取硬件解码编码器 旧版返回 "h264|hevc" → 新版返回 JSON 对象
(5) 事件 移除 属性被改变 事件,请改用具体事件(如 播放状态改变、播放时间改变 等) 视频尺寸改变 事件已移除,可以通过 取视频宽度/高度 主动获取
(6) 火山模块名称 新旧版均为 火山.MPV组件,包名不变,但需要替换所有相关源文件(.cpp/.h)和链接库(libmpv-2.dll 等)。
5,快速上手示例(初学者) // 1. 创建播放器对象 变量 播放器 : MPV播放器
// 2. 初始化(窗口句柄从你的组件中获取,比如 取窗口句柄()) 变量 结果 <类型 = JSON对象类> 结果.创建自文本 (播放器.初始化(窗口句柄, 0)) // 0=自动解码 如果 (结果.取文本值 ("status") == "success") 调试输出("初始化成功,实例ID:" + 结果.取文本值 ("instance_id")) 否则 调试输出("初始化失败:" + 结果.取文本值 ("message")) 结束
// 3. 设置自动播放并加载视频 播放器.自动播放 = 真 播放器.加载文件("C:/视频/我的电影.mp4")
// 4. 控制播放 播放器.播放() 程序延时(5000) // 播放5秒 播放器.暂停() 播放器.当前时间 = 30.0 // 跳转到30秒 播放器.音量 = 80
// 5. 字幕 播放器.加载字幕("C:/视频/字幕.srt") 播放器.字幕字体 = "微软雅黑" 播放器.字幕字号 = 24 播放器.字幕颜色 = "#FFFF00" // 黄色
// 6. 事件处理(在播放器类的“事件”窗口中定义) 方法 播放状态改变 (状态值) 如果 (状态值 == 1) 状态标签.标题 = "正在播放" 否则 状态标签.标题 = "已暂停" 结束
方法 播放时间改变 (时间位置) 进度条.位置 = 时间位置 / 播放器.取总时长() * 100 结束
方法 错误发生 (错误信息, 错误代码) 信息框("出错:" + 错误信息) 结束
6,常见问题 Q: 升级后原来能播放的文件不能放了? A: 检查 libmpv-2.dll 是否已替换为 0.41.0 版本,新版 DLL 在 MPV/libs/ 目录下。
Q: 如何获取视频总时长? A: 在 文件加载完成 事件中调用 播放器.取总时长()。
Q: 如何实现循环播放? A: 设置 播放器.置循环播放(真),或者使用 AB 循环点。
Q: 摄像头无法显示? A: 先用 取摄像头列表() 查看设备名,然后调用 加载摄像头(设备名),并在之前设置合适的参数:置摄像头参数("video_size=1280x720,framerate=30")。
组件获取与更新支持 组件及完整示例源码已打包,包含火山项目、C++ 源码、mpv 0.41.0 动态库。 论坛版本:仅在重大更新时发布,确保稳定。 高频更新与细分版本:请加入 QQ 群 26660804,获取最新代码、补丁及技术支持。
致谢
感谢所有内测用户的反馈与耐心!未发现严重问题。如有任何疑问或建议,欢迎在论坛回帖或加群交流。 若觉得好用,欢迎点赞支持!祝大家编码愉快,播放流畅!
方法展示: 初始化 取实例ID 加载文件
自动播放 (写) 自动播放 (读) 播放
暂停 停止 可视 (写)
可视 (读) 当前时间 (写) 当前时间 (读)
取总时长 是否正在播放 是否暂停
音量 (写) 音量 (读) 静音 (写)
静音 (读) 亮度 (写) 亮度 (读)
对比度 (写) 对比度 (读) 饱和度 (写)
饱和度 (读) 伽马 (写) 伽马 (读)
色相 (写) 色相 (读) 播放速度 (写)
播放速度 (读) 音频轨道数量 (读) 音频轨道 (写)
视频轨道数量 (读) 视频轨道 (写) 字幕轨道数量 (读)
字幕轨道 (写) 取当前音频轨道 取当前视频轨道
取当前字幕轨道 加载字幕 字幕可见性 (写)
字幕可见性 (读) 字幕延迟 (写) 字幕延迟 (读)
移除字幕 字幕字体 (写) 字幕字体 (读)
字幕字号 (写) 字幕字号 (读) 字幕颜色 (写)
字幕颜色 (读) 字幕缩放 (写) 字幕缩放 (读)
字幕位置 (写) 字幕位置 (读) 字幕编码 (写)
字幕编码 (读) 字幕边框大小 (写) 字幕边框大小 (读)
字幕阴影颜色 (写) 字幕阴影颜色 (读) 字幕阴影偏移 (写)
字幕阴影偏移 (读) 字幕水平对齐 (写) 字幕水平对齐 (读)
字幕垂直对齐 (写) 字幕垂直对齐 (读) 播放列表添加
播放列表清空 播放列表下一项 播放列表上一项
播放列表播放指定项 取播放列表项目数 取播放列表当前索引
取播放列表项名称 播放列表移除 播放列表随机
取视频宽度 取视频高度 取音频编码
取视频编码 取视频帧率 截图保存
截图质量 (写) 截图质量 (读) 图片切换时间 (读)
图片切换时间 (写) 置播放列表自动播放 置反交错
置视频旋转 置视频缩放 置去色带
置插值 置音频设备ByName 置音频设备
取当前音频设备 置音频声道 取当前音频声道
置音频采样率 取音频设备列表 置循环播放
置循环点 置循环点A 置循环点B
取循环点A 取循环点B 清空循环点
取丢帧计数 取缓存时长 取已用缓存
取缓存速度 取网络速度 清理缓存
重新加载视频 置网络超时 置用户代理
置引用页 置缓存秒数 置解复用器向前缓存
置解复用器向后缓存 前进一帧 后退一帧
音频延迟 (写) 音频延迟 (读) 取章节数量
取当前章节 跳转章节 取章节列表
取元数据 置视频缩放模式 取视频缩放模式
取详细GPU信息 取硬件解码编码器 取轨道列表
取显示器信息 取摄像头列表 加载摄像头
置摄像头参数 取摄像头参数 取估计滤镜帧率
取VO延迟帧数 取解码器丢帧数 置VDLAVC线程数
置解码线程数 取解码线程数 执行MPV命令
|